事件总线是对发布-订阅模式的一种实现,是一种集中式事件处理机制,允许不同的组件之间进行通信,常用于两个非父子关系组件和兄弟组件之间通讯。可以借助第三方的发布订阅js包PubSubJS,来实现事件总线的功能。
PubSubJS包安装命令:npm install pubsub-js
- 传递页面
<button bind:tap="sendData">传递数据给兄弟</button>
import PubSub, { publish } from 'pubsub-js'
methods: {
sendData(){
// publish发布、发射自定义事件,传递两个参数,1、自定义事件名称;2、需要传递的数据
PubSub.publish('myevent',this.data.name)
}
}
- 接收页面
import PubSub, { publish } from 'pubsub-js'
lifetimes:{
attached(){
// subscribe订阅、监听自定义的事件,接收两个参数
// 1、需要订阅、监听的自定义事件名称
// 2、回调函数,回调函数有两个参数,msg-自定义事件的名称,data传递过来的数据
PubSub.subscribe('myevent',(msg,data) => {
console.log(msg,data)
this.setData({
name:data.name
})
})
}
}