🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# 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> ```