美文网首页
vue使用bus进行组件通信

vue使用bus进行组件通信

作者: 媛猿YY | 来源:发表于2020-08-14 17:43 被阅读0次

全局引入

在main.js中全局引入

const bus = new Vue()
Vue.prototype.$bus = bus;

使用场景

在顶部导航栏选择不同的二级菜单,在左侧渲染相对应的三级菜单,就涉及到两个组件之间方法调用,即组件(A)调用组件(B)的方法


image.png

调用方法

A组件

<el-dropdown type="primary" @command="handleCommand">
                    <span class="el-dropdown-link">SDK测试<i class="el-icon-arrow-down el-icon--right"></i> </span>
                    <el-dropdown-menu slot="dropdown">
                        <el-dropdown-item command="a">线上巡检</el-dropdown-item>
                        <el-dropdown-item command="b">多媒体播放质量</el-dropdown-item>
                        <el-dropdown-item command="c">SDK接口测试</el-dropdown-item>
                    </el-dropdown-menu>
</el-dropdown>
handleCommand(val) {
            console.log('Headerval: ', val);
            // 这里应该就是 打印的 a b c 这几个值
            this.$bus.$emit('navChange', val);
        },

B组件

this.$bus.$on('navChange', (res) => {
            console.log('Navres', res);
            if (res == 'a') {
                this.showNav();
                this.isActive = true;
                this.bisActive = true;
                this.cisActive = true;
            } else if (res == 'b') {
                this.showNav();
                this.isActive = true;
                this.aisActive = true;
                this.cisActive = true;
            } else if (res == 'c') {
                this.showNav();
                this.isActive = true;
                this.aisActive = true;
                this.bisActive = true;
            }
        });

默认进入首页要加载全部的三级菜单,所以进入时默认让所有的三级菜单显示,点击相应的二级菜单拿到值去做判断,隐藏不需要的菜单

相关文章

  • vue使用bus进行组件通信

    全局引入 在main.js中全局引入 使用场景 在顶部导航栏选择不同的二级菜单,在左侧渲染相对应的三级菜单,就涉及...

  • vue使用bus进行组件通信

    bus utils - bus.js 一、传值 发送信息 第一个参数为标志变量,第二个参数为通信的值 接收信息 第...

  • vue使用bus进行组件通信

    官方文档由于 Vue 实例实现了一个事件分发接口,通过使用事件中心,允许组件自由交流,无论组件处于组件树的哪一层。...

  • vue文档集合

    Vue2使用笔记3--父子组件的通信Vue 2.0开发实践(组件间通讯)Event Bus 在Vue中的使用vue...

  • 2019-02-14 vue组件基础篇3

    非父子组件通信 1.使用一个空的Vue实例作为中央事件总线(bus)2.bus.$emit('key', 'tex...

  • 使用Bus.js进行组件通信

    新建Bus.js文件 在需要通信的组件中引入bus.js 传值组件 通过$emit发送一个msg事件,传的参数是>...

  • vue 新增属性 $attrs及$listeners (组件通信

    介绍:vue组件之间的通信方式有很多种,props/emit , event bus, vuex, provide...

  • Vue兄弟组件之间传值

    可以用过一个vue实例Bus作为媒介,要相互通信的兄弟组件之中,都引入Bus,之后通过分别调用Bus事件触发on来...

  • VUE.$bus事件总线——非父子组件信息传递

    $bus主要作用是进行非父子组件信息传递,使用方法如下: 第一步:在main.js中将$bus绑定到vue原型上 ...

  • Vue兄弟组件之间传值

    可以用过一个vue实例Bus作为媒介,要相互通信的兄弟组件之中,都引入Bus,之后通过分别调用Bus事件触发$em...

网友评论

      本文标题:vue使用bus进行组件通信

      本文链接:https://www.haomeiwen.com/subject/hnqndktx.html