好家伙,贼绕,贼复杂
以下就是用自定义事件实现删除的功能
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> </head> <body> <!--view层,模板--> <div id="vue"> <todo> <todo-title slot="todo-title" :title="title_text"></todo-title> <!--<todo-items slot="todo-items" v-for="(item,index) in todoItems" v-bind:item="item"></todo-items>--> <!--如下为简写--> <todo-items slot="todo-items" v-for="(item,index) in todoItems" :item_p="item" :index_p="index" v-on:remove="removeItems(index)" :key="index"></todo-items> </todo> </div>
<!--1.导入Vue.js--> <script src="../js/vue.js"></script> <script type="text/javascript"> Vue.component('todo',{ template:'<div>\ <slot name="todo-title"></slot>\ <ul>\ <slot name="todo-items"></slot>\ </ul>\ </div>' });
Vue.component('todo-title',{ props:['title'], template:'<div>{{title}}</div>' });
//这里的index,就是数组的下标,使用for循环遍历的时候,可以循环出来! Vue.component("todo-items",{ props:["item_p","index_p"], //这里我绑定我自己的方法 template:"<li>{{index_p+1}},{{item_p}} <button @click='remove_methods'>删除</button></li>", methods:{ remove_methods:function (index) { //this.$emit 自定义事件分发, this.$emit('remove',index); //删除 } } }); var vm = new Vue({ el:"#vue", data:{ title_text:"秦老师系列课程", todoItems:['test1','test2','test3'] //普普通通的数据 }, methods:{ removeItems:function(index){ console.log("删除了"+this.todoItems[index]+"OK"); //控制台显示操作 this.todoItems.splice(index,1); } } }); </script> </body> </html>