这里我点击child,并不会触发 grandpa 组件的监听函数,即使我把parent上面的监听去掉。
正常的dom元素事件也是会冒泡的,为什么这样设计呢?
Vue.component('grandpa', {
template: '<div >grandpa<parent @update="handleUpdate"></parent></div>',
methods: {
handleUpdate() {
console.log("grandpa update")
}
},
components: {
'parent': {
template: `<div>parent<child @update="handleUpdate"></child></div>`,
methods:{
handleUpdate() {
console.log("parent update")
}
},
components: {
'child': {
template: `<div @click="$emit('update',33)">child</div>`
}
}
}
}
});
new Vue({
el: "#root"
});
你需要在
parent
中继续emit
: