多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# BUG ## 原因 回顾我们以上的代码,我们重头来梳理一下,看看会出现的意外情况,比如在**删除列表**时,出现的意外情况。在底栏状态为**全部**时,我们没有发现任何情况。在切换为**进行中**或者是**已完成**时,再进行上面所说的和**删除列表**,就出现了意外。 究其原因是因为我们用了**索引值**,而且`curlist`数组的索引和`list`数组的**索引对不上**,导致的问题。 ## 解决办法 索引值是不可以用的,我们删除数组时传递的索引值,不传索引,我们还可以直接把对应的当前数组中存储的对象传递下去即i`tem` 然后再通过`list数组`查找到当前`item` 的**索引**。再将**索引这一项对应的item对象从list数组中删除**即可 如何查找到对应的索引,我们可以通过数组方法中的`indexOf`方法来解决。 ``` <li :class="{completed:item.selected,editing:edit===index}" v-for="(item,index) in list"> <div class="view"> …… <button class="destroy" @click="remove(item)"></button> </div> …… </li> …… <script> …… var vm = new Vue({ …… methods: { …… remove(index){ var index = this.list.indexOf(item); this.list.splice(index, 1) } } }) </script> ```