有没有办法让父组件监听它的子组件发出的自定义事件?
// -- child comp
const addnewbtn = {
template : '<div><button v-on:click="showform">Add New Task</button><form v-show="form" v-on:submit.prevent="addnewtask"><input type="text" v-model="taskname" /><button>Add</button></form></div>',
data(){
return {
taskname : '',
form : false
}
},
methods : {
showform(){
if( this.form ){
this.form = false;
}else{
this.form = true;
}
},
addnewtask(){
this.$emit('add-task',this.taskname);
}
},
}
// -- parent comp
Vue.component('todolist',{
components : { addnewbtn },
data(){
return {
todoitems : [
{ name : 'Task 1', checked : false },
{ name : 'Task 2', checked : false },
{ name : 'Task 3', checked : false },
]
}
},
methods : {
makeitdone(item){
if( this.todoitems[item].checked ){
this.todoitems[item].checked = false;
}else{
this.todoitems[item].checked = true;
}
},
removeitem(item){
this.todoitems.splice(item,1);
},
addtask(){
alert();
}
},
created(){
this.$root.$on('add-task',function(){
alert();
});
}
});
Run Code Online (Sandbox Code Playgroud)
试过了
this.$root.$on('add-task',function(){
alert();
});
Run Code Online (Sandbox Code Playgroud)
或者
this.$parent.$on('add-task',function(){
alert();
});
Run Code Online (Sandbox Code Playgroud)
但不幸的是,两部作品都没有。我怎样才能做到这一点?
在您的父组件中,只需添加监听 @add-task
<addnewbtn @add-task="addtask" />
Run Code Online (Sandbox Code Playgroud)
然后它可以监听从孩子发出的事件
this.$emit('add-task',this.taskname);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
4348 次 |
| 最近记录: |