父组件->子组件
v-bind:index = 'key' 简写 :index='key'
遍历list的时候 将每一项的值赋值给value 每一项的下标赋值给key 把value值通过v-bind绑定到变量 content上 把key值通过v-bind绑定到变量 index上 传递给to-do-list组件
子组件->父组件
通过 this.$emit('delete',this.index) ; 向外触发 delete事件 并传参this.index 父组件监听delete事件 获取到当前下标
v-on:delete="handleItemDelete" 简写 @delete="handleItemDelete"
<!DOCTYPE html>
<html>
<head>
<title>delete_todolist</title>
<meta charset="UTF-8"/>
<script src="./vue.js"></script>
</head>
<body>
<div id='app'>
<input type='text' v-model="inputValue"/>
<button @click="handleBtnClick">submit</button>
<ul>
<!-- v-bind:content='value' 简写 :content='value'
v-on:delete="handleItemDelete" 简写 @delete="handleItemDelete"
-->
<to-do-list :content='value'
:index = 'key'
v-for="(value,key) in list"
@delete="handleItemDelete">
</to-do-list>
</ul>
</div>
<script>
var ToDoList = {
props:['content','index'],
template:"<li @click='handleItemDelete'>{{content}}</li>" ,
methods:{
handleItemDelete:function() {
//alert(this.index) ;
this.$emit('delete',this.index) ;
}
}
}
var app = new Vue({
el:"#app" ,
components:{
ToDoList:ToDoList
},
data:{
list:[] ,
inputValue:''
},
methods:{
handleBtnClick:function() {
this.list.unshift(this.inputValue) ;
this.inputValue = ''
},
handleItemDelete:function(index) {
//alert(index) ;
//splice函数 从指定下标开始删除 第二个参数 删除几位
this.list.splice(index,1) ;
}
}
})
</script>
</body>
</html>