uniapp使用 EventBus 进行通讯

331 阅读1分钟

问题:

如果有两个自定义组件,但是两个组件没有任何关系,也就是谁也没嵌套谁,谁也没用谁,兄弟关系,使用ref也拿不到组件的实例,这样如何进行传参?

使用方法

main.js中创建事件总线

eventBus对象注册到Vue的原型上,这样每个组件都可以使用eventBus

Vue.prototype.$eventBus = new Vue()
在 A 页面添加点击事件向 B 页面发送消息,传递参数
A页面代码:
<button @click=“sendMsg”>点我一下</button>

<script>
//'getId'这个是自定义事件的名字
//12是A页面要给B页面传递的参数,也可以是A页面data里面的数据,也可以自己直接写参数
sendMsg() {  
    this.$eventBus.$emit('getId', 12)
}
</script>
B页面代码
created() { 
//注意:在$on里使用this,一定要把this使用变量转存一下,然后用that代替this
//id就是A页面传递过来的参数

    let that=this 
    this.$eventBus.$on('getId', function(id) { 
        that.id = id  
        console.log(id)  //12
    })
}

vue里使用EventBus解决兄弟组件间的传递信息

参考链接:blog.csdn.net/weixin_6410…