新創(chuàng)建一個(gè)vue實(shí)例用于調(diào)度事件的綁定和發(fā)送
可以做到同級(jí)組件相互通訊,傳遞參數(shù),點(diǎn)擊第一個(gè)組件會(huì)修改第二個(gè)組件的label值,點(diǎn)擊第二個(gè)組件會(huì)修改第二個(gè)組件的label值
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <script src="vue.js"></script> </head> <body> <div id="app"> <one></one> <two></two> </div> </body> <script> // 使用一個(gè)vue實(shí)例 作為事件的載體,用于綁定事件和處理發(fā)送事件,作為調(diào)度中心 let eventBus = new Vue() let one = { template: '<div>{{val}} <button @click="click">click</button></div>', data() { return { val: 0 } }, created() { //為one綁定事件,如果two_click事件發(fā)生了,則執(zhí)行回調(diào)函數(shù) eventBus.$on('two_click', (val) => { // 這個(gè)this 指的是one的vue實(shí)例 this.val = val } ) }, methods: { click() { // 如果one被點(diǎn)擊了,則發(fā)送一個(gè)one_click的事件,并傳遞一個(gè)參數(shù) eventBus.$emit('one_click', 11) } } } let two = { template: '<div>{{val}} <button @click="click">click</button></div>', data() { return { val: 0 } }, created() { eventBus.$on('one_click', (val) => { this.val = val }) }, methods: { click() { eventBus.$emit('two_click', 22) } } } new Vue({ el: '#app', components: { one, two } }) </script> </html>
總結(jié)
以上所述是小編給大家介紹的vue 使用eventBus實(shí)現(xiàn)同級(jí)組件的通訊,希望對(duì)大家有所幫助,如果大家有任何疑問請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!
聲明:本網(wǎng)頁內(nèi)容旨在傳播知識(shí),若有侵權(quán)等問題請(qǐng)及時(shí)與本網(wǎng)聯(lián)系,我們將在第一時(shí)間刪除處理。TEL:177 7030 7066 E-MAIL:11247931@qq.com