收藏
回答

for 循环渲染模板时状态没有同步

问题模块 框架类型 问题类型 终端类型 微信版本 基础库版本
框架 小程序 Bug 工具 所有 2.4.1

初始状态如下:



当我在开发工具的调试器的 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}}" 传就会有上面的问题。


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

最后一次编辑于  2018-12-04  (未经腾讯允许,不得转载)
回答关注问题邀请回答
收藏

1 个回答

  • 是柿子啊
    是柿子啊
    2018-12-06

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

    2018-12-06
    赞同
    回复 5
    • 戬翀
      戬翀
      2018-12-06

      请问你是把已选中的选项与非选中的选项交换吗?我身边几个同事都有一样的现象

      2018-12-06
      回复
    • 是柿子啊
      是柿子啊
      2018-12-06回复戬翀

      尝试多次改变该选项的位置,未复现问题,真机以及工具表现一致。你的工具的版本是?还是需要什么复现步骤?

      2018-12-06
      回复
    • 戬翀
      戬翀
      2018-12-07回复是柿子啊

      工具版本是 1.02.1811290 复现步骤是:初始状态只有「中国」是选中的,然后在工具的 AppData 面板里通过拖动的方式来更换顺序,这时候就会复现。或者在 AppData 面板里直接把「中国」这一项删除,也能复现。 还有请问你是用了我提供的代码片段吗

      2018-12-07
      回复
    • 是柿子啊
      是柿子啊
      2018-12-07回复戬翀

      按照步骤,还是没有复现,是不是你的代码片段,这个是你写的,这个很轻易看得出来吗?

      2018-12-07
      回复
    • 戬翀
      戬翀
      2018-12-07回复是柿子啊

      现象与步骤可以看这里 https://i.loli.net/2018/12/07/5c09e5c54d718.gif

      2018-12-07
      回复