vue如何删除数组中的单个数据

我做了一个todolist的demo.

模板中用v-for列出todos中的数据.

            <ol>
                <li v-for="todo in todos" @click="delete">
                    {{todo.label}}
                </li>
            </ol>

数据结构是这个样子:

            data: {
                todos: [
                    {label: 'walking'},
                    {label: 'talking'},

                ]
            }
            

页面是这个样子

clipboard.png

我想要当我点击一个todo的时候, 就在todos数据中删除对应的数据. 比如我点击walking, 那么todos中就只剩下talking, 页面自然就更新了. 但是一直找不到合适的方法. 求指导.

阅读 27.2k
3 个回答

如果是vue1.0这样写:

<ol>
            <li v-for="todo in todos" @click="delete($index)">
                    {{todo.label}}
            </li>
</ol>

然后:

methods:{
    
    delete:function(index){
        this.todos.splice(index,1);
    }
}

如果是vue2.0这样写:

<ol>
                <li v-for="(todo,index) in todos" @click="delete(index)">
                    {{todo.label}}
                </li>  
</ol>

然后

methods:{
    
    delete:function(index){
        this.todos.splice(index,1);
    }
}

你点击的时候需要得到todo的索引,再对todos数组进行
arr.splice(index,1);

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题