megalo
megalo copied to clipboard
v-for嵌套报错
<div class="cell-group"
v-for="(cellGroup,index) in cells"
:style="{marginBottom:groupGap+'rpx'}">
<div v-for="(cell,cellIndex) in cellGroup">>
<text>test</text>
</div>
</div>
百度小程序报错

的确有问题,但貌似是百度小程序的 bug,在嵌套的 s-for 里不支持计算表达式的值
暂时没有方法绕过,第二层遍历封装成一个组件应该可以
原因是这样的例如这样一个嵌套的 for 循环:
<div v-for="(cellGroup,index) in cells">
<div v-for="(cell,cellIndex) in cellGroup">>
</div>
</div>
这段代码编译成模版的时候,会变成
<view s-for="{{ node[0].li }}" s-for-item="cellGroup" s-for-index="index">
<view s-for="{{ node[ 1 + '_' + index ].li }}“ s-for-item="cell" s-for-index="cellIndex">
</view>
</view>
在第二层循环里面 s-for="{{ node[ 1 + '_' + index ].li }}“ 异常,但这个表达式在普通的插值,比如放到一个 view 标签的 content 中,是能够正常执行。因此导致列表无法正常渲染。目前这个问题只在百度小程序中发现。
目前暂时没有更好的方案绕开,只能在开发时不要使用嵌套的循环,尝试用组件封装一层,让上述异常表达式不要出现。