megalo icon indicating copy to clipboard operation
megalo copied to clipboard

v-for嵌套报错

Open torns opened this issue 7 years ago • 3 comments

<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>

百度小程序报错 21

torns avatar Nov 22 '18 02:11 torns

的确有问题,但貌似是百度小程序的 bug,在嵌套的 s-for 里不支持计算表达式的值

elcarim5efil avatar Nov 22 '18 07:11 elcarim5efil

暂时没有方法绕过,第二层遍历封装成一个组件应该可以

elcarim5efil avatar Nov 22 '18 08:11 elcarim5efil

原因是这样的例如这样一个嵌套的 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 中,是能够正常执行。因此导致列表无法正常渲染。目前这个问题只在百度小程序中发现。

目前暂时没有更好的方案绕开,只能在开发时不要使用嵌套的循环,尝试用组件封装一层,让上述异常表达式不要出现。

elcarim5efil avatar Nov 29 '18 01:11 elcarim5efil