<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title></title>
<script src="https://cdn.staticfile.org/vue/2.2.2/vue.min.js"></script>
</head>
<body>
<div id="root">
<div>
<input v-model="inputValue" />
<button @click="handleSubmit">提交</button>
</div>
<ul>
<!-- <li v-for="(item,index) of list" :key="index"> -->
<!-- {{item}} -->
<todo-item v-for="(item,index) of list"
:key="index"
:content='item'
:index="index"
@delete='handleDelete' 监听handleDelete事件
>
</todo-item>
<!-- </li> -->
</ul>
</div>
<script>
Vue.component('todo-item',{
props: ['content',index],
template: '<li @click='handleClick'>{{content}}</li>',
methods: handleClick: function(){
this.$emit('delete',this.index)
}
}
})
new Vue({
el:"#root",
data:{
inputValue: "",
list: []
},
methods: {
handleSubmit: function(index){
this.list.push(this.inputValue)
this.inputValue = ''
},
handleDelete:function(){
this.list.splice(index,1)
}
}
})
</script>
</body>
</html>
我的理解,组件中methods是个对象,而不是一个函数,毕竟method带有s哦
这里应该写成methode:{handleClick:function(){........}}
应该用双引号 @click="HandClick"index 而且上面漏了单引号 props:['content','index']
methods:{
handleSumbit:function(){
this.list.push(this.inputValue);
this.inputValue = '';
},
handleDelete:function(index){
this.list.splice(index,1);
}
}
不是这个问题
你的method方法,掉了参数index,应该为
handleDelete:function(index){
this.list.splice(index,1)
}