之前了解到了父组件传值给子组件(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()来调用

Logo

前往低代码交流专区

更多推荐