for 循环渲染模板时状态没有同步
发布于 5 年前 作者 yan97 16060 次浏览 来自 问答

初始状态如下:

当我在开发工具的调试器的 AppData 里把「中国」和其他选项的位置交换一下,例如把「中国」和「美国」换一下,就会变成下面这样:

我仅仅是交换了位置,但「美国」就自动选中了。这时候看 AppData 里的状态,「美国」是没有选中的。所以实际的状态没有和视图同步。

代码如下:

<checkbox-group bindchange="checkboxChange">
  <label class="checkbox" wx:for="{{items}}" wx:key="{{item.value}}">
    <template is="checkbox" data="{{...item}}" />
  </label>
</checkbox-group>
 
<template name="checkbox">
    <checkbox wx:key="{{item.value}}" value="{{name}}" checked="{{checked}}"/>{{value}}
</template>

是在官方的 checkbox 代码片段的基础上改的,只是把 checkbox 放在了 template 里。

如果我在 template 的 data 属性里这样 data="{{item.checked}}" 的话是不会自动选中的,但是这样 data="{{…item}}" 传就会有上面的问题。

虽然知道避免的办法,但还是想知道原因是什么?

1 回复

测试了下,没有复现调换位置复选的情况

回到顶部