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()来调用

你可能感兴趣的:(#,vue,vue.js,javascript,前端)