Vue兄弟组件传值 ------ bus 中央事件总线

之前了解到了父组件传值给子组件(props),子组件传值给父组件($emit),对于兄弟组件间传值是通过他们的父组件作为介质传送的,相当麻烦,现在用bus(一个空的vue对象)作为介质传值更加方便。


第一步:在assert文件夹下创建一个eventBus.js文件


第二步:在components文件夹下创建一个文件,用来传递数据(触发自定义函数)


第三步:在components文件夹下创建一个文件,用来接收数据(监听自定义函数)


第四步:在App.vue里使用这两个组件


结果:


补充:像以上引入Bus的方式,经过webpack打包后可能会出现bus局部作用域的情况,就是说引用的不算是同一个bus,最后不能正常通信

解决方法:直接将Bus注入到Vue根对象中

import Vue from 'vue'
const Bus = new Vue()

var app= new Vue({
el:'#app',
   data:{
    Bus
}})
ps: 在子组件中通过this.$root.Bus.$on(),this.$root.Bus.$emit()来调用

  • 7
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值