思路: 在子组件的click 事件中,删除父组件中的list项中的某一数值。
即子组件与父组件通信。此时,需要“发布订阅模式”来做这件事情。
<!DOCTYPE html>
<html>
<head>
<title>todolist</title>
<meta charset="utf-8">
<script src="./vue.js"></script>
</head>
<body>
<div id="root">
<div>
<input v-model="inputValue" />
<button @click="handleclick">提交</button>
</div>
<ul>
<!-- 使用全局组件 -->
<!-- 这是父组件!!! -->
<todo-list
v-for="(item,index) of list"
:key="index"
:content="item"
:index="index"
@delete="handleDelete">
<!-- 监听子组件的delete事件 -->
</todo-list>
</ul>
</div>
<script >
// 全局组件
// 这是子组件!!!
Vue.component('todo-list',{
props: ['content','index'],
template: '<li @click="handleclick">{{content}}</li>',
methods: {
handleclick: function(){
// 子发布一个delete事件,传递一个参数
this.$emit('delete',this.index);
}
}
})
new Vue({
el: "#root",
data: {
inputValue: "",
list: []
},
methods: {
handleclick: function(){
this.list.push(this.inputValue);
this.inputValue = '';
},
handleDelete:function(index){
this.list.splice(index,1)
}
}
})
</script>
</body>
</html>