似乎Vue.js 2.0不会将事件从孙子传递到他的父组件。
Vue.component('parent', {
template: '<div>I am the parent - {{ action }} <child @eventtriggered="performAction"></child></div>',
data(){
return {
action: 'No action'
}
},
methods: {
performAction() { this.action = 'actionDone' }
}
})
Vue.component('child', {
template: '<div>I am the child <grand-child></grand-child></div>'
})
Vue.component('grand-child', {
template: '<div>I am the grand-child <button @click="doEvent">Do Event</button></div>',
methods: {
doEvent() { this.$emit('eventtriggered') }
}
})
new Vue({
el: '#app'
})
这个JsFiddle解决了https://jsfiddle.net/y5dvkqbd/4/的问题,但是通过列举了两个事件:
- 从孙子到中间部分
- 然后从中间部分再次发射到祖父母
添加此中间事件似乎是重复且不必要的。有没有一种方法可以直接向我不知道的祖父母发出?
我根据@digout答案做了一个简短的mixin。您想在Vue实例初始化(新Vue ...)之前放置它,以便在项目中全局使用它。您可以像正常事件一样使用它。