在Vue的原型上定義一個變量bus,在所有的組件里都可以這個變量,使用this.bus.$emit()發(fā)布消息,this.bus.$on訂閱消息
<!-- 在Vue的原型上定義一個變量bus,所有Vue的實(shí)例或組件都將共享這個bus,可以用bus來發(fā)布消息或訂閱消息 -->
Vue.prototype.bus = new Vue();
new Vue({
el: '#root',
mounted(){
// 在所有的組件上都可以訂閱這條消息
// 參數(shù)1發(fā)布者的名稱,參數(shù)3接收的值
this.bus.$on('chen',(msg)=>{
console.log(msg)
})
},
components: {
com:{
template: "<button @click='sub'>子組件</button>",
methods: {
// 在發(fā)布者定義發(fā)布者
sub(){
// 參數(shù)1發(fā)布者名稱,參數(shù)2傳遞的值
this.bus.$emit('chen',"這是子組件傳給去的值")
}
}
},
com1:{
template: "<div>子組件2</div>",
mounted(){
// 在子組件里同樣可以訂閱
this.bus.$on('chen',(msg)=>{
console.log(msg)
})
},
},
}
})