wx:for

发布于 8 年前作者 zgu5066 次浏览最后编辑 8 年前来自 ask

page中定义starNum = 2;

这样写,只会打印一个图片

<block wx:for=“{{starNum}}”>

    <image src=https://fangmaster-pic.oss-cn-beijing.aliyuncs.com/small\_program/grade-star.png mode=“widthFix”></image>

</block>

<block wx:for=“2”>

    <image src=https://fangmaster-pic.oss-cn-beijing.aliyuncs.com/small\_program/grade-star.png mode=“widthFix”></image>

</block>

这样写,会打印两个图片

<block wx:for=“{{2}}”>

    <image src=https://fangmaster-pic.oss-cn-beijing.aliyuncs.com/small\_program/grade-star.png mode=“widthFix”></image>

</block>

<block wx:if=“{{starNum > 0}}” wx:for=“{{[1,2]}}”>

    <image src=https://fangmaster-pic.oss-cn-beijing.aliyuncs.com/small\_program/grade-star.png mode=“widthFix”></image>

</block>

这样写,会打印三个图片

<block wx:if=“{{starNum > 0}}” wx:for=[1,2]”>

    <image src=https://fangmaster-pic.oss-cn-beijing.aliyuncs.com/small\_program/grade-star.png mode=“widthFix”></image>

</block>

为什么会出现这种情况呢?完全搞不懂逻辑

我想实现

<block wx:for="{{starNum}}">

    <image src='https://fangmaster-pic.oss-cn-beijing.aliyuncs.com/small_program/grade-star.png' mode="widthFix"></image>

</block>

能够打印2个图片,该怎么做?

5 回复
liyi
liyi1 楼6 年前

为什么我把starNum直接定为2,可以正常显示两个

WXOPEN Club 内容图片
napan
napan2 楼6 年前

在js生成一个数组然后再渲染不就好了

xia61
xia613 楼6 年前

嗯嗯   从别的page中传过来的,默认string了

xiena
xiena4 楼6 年前

page里面的 starNum 类型写成string了吧,应该是number

qgong
qgong5 楼6 年前

微信小程序文档里有说明:

当 wx:for 的值为字符串时,会将字符串解析成字符串数组

https://developers.weixin.qq.com/miniprogram/dev/framework/view/wxml/list.html

直接写 wx:for=“2” ,不管是什么内容,实际都是作为字符串处理的,而wx:for=“{{x}}”,如果x是有效变量则按变量值处理,如果x是数组则按数组处理,其它情况按字符串遍历。