全局事件总线
一种可以在任意组件间通信的方式,本质上就是一个对象,它必须满足以下条件
- 所有的组件对象都必须能看见他
- 这个对象必须能够使用$on$emit$off方法去绑定、触发和解绑事件
消息的订阅与发布(基本不用)
消息订阅与发布(pubsub)消息订阅与发布是一种组件间通信的方式,适用于任意组件间通信
使用步骤
安装pubsub:npm i pubsub-js
引入:import pubsub from 'pubsub-js'
接收数据:A组件想接收数据,则在A组件中订阅消息,订阅的回调留在A组件自身
School.vue
通过.subscribe()函数来接收订阅消息。有两个参数,第一个为接收的订阅名称,第二个为一个函数。
函数里面也有两个参数,第一个参数可以收到订阅的name,第二个是订阅的数据消息。
给.subscribe()赋给一个变量,这里通过this放在本地的vc当中。
然后通过这个变量名称放在unsubscribe()函数里面可以消除订阅。
pubsub.unsubscribe(this.pubID)
import pubsub from "pubsub-js";//消息订阅与发布他是个对象,对象里面有很多有用的方法。
methods:{
dataName(name,value){
this.StudentName=value
}
},
mounted() {
this.pubID=pubsub.subscribe("name",this.dataName)
},
beforeDestroy() {
pubsub.unsubscribe(this.pubID)
},
Students.vue
通过.publish()函数来发送给订阅者的消息
import pubsub from "pubsub-js";
methods: {
sendStudentName(){
pubsub.publish('name',this.name);
}
},
}