ดูเหมือนว่า 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/แต่โดยปล่อยสองเหตุการณ์:
- หนึ่งจากลูกใหญ่ไปจนถึงองค์ประกอบกลาง
- จากนั้นเปล่งแสงอีกครั้งจากองค์ประกอบกลางไปยังพาเรนต์ใหญ่
การเพิ่มเหตุการณ์ตรงกลางนี้ดูเหมือนจะซ้ำซากและไม่จำเป็น มีวิธีที่จะส่งไปยังผู้ปกครองที่ไม่รู้จักโดยตรงหรือไม่?