view中 含有checkbox item text 三者 ,list的内容如下
text 绑定点击事件,点击后删除list 的内容。
vi
如果不用 v-bind:key属性 ,删除第一个元素的时候,会出现以下情况
view 里面 有checkbox {{item}} text 三者元素
删除的元素的时候,使用的是diff算法,diff算法为了节省渲染空间,会识别元素是否发生变化,如果不发生变化,就会将元素复用。
删除第一个元素时, view标签是一样的 ,checkbox标签一样,{{item}}中第一个元素‘青海长云暗雪山’被删除,第二个元素‘’孤城遥望玉门关替换上来,text标签是一样的,于是view checkbook text 发生复用。 导致第一个打钩的checkbox 保留了下来。
view中添加v-bind:key=item 或者item.id(需要给每个数据添加一个id值区分数据)
删除成功
给每个view绑定了一个key值,key的内容是item ,即每句古诗,由于每句古诗内容不一样,就保证了key都是不一样的 用key值去区分 每个view是不一样的
删除第一个元素的时候,由于view标签不一样(key值不一样),导致整个view发生了更新,里面的checkbox值自然不会发生复用
如果给每个 view中添加v-bind:key=index,第一句古诗的index是0,view的key值是0,第二句index是1,view的key值是1,
删除第一句古诗之后,第二句古诗的index值变成了 0,key值也变成 了0,diff算法会吧 删除 前后 的view 识别为一样的 view. 导致 checkbox 继续复用