• Vue的事件总线


    原本存在直接相关的父子组件之间进行数据的交互,但是对于组件之间没有直接的,如何进行数据交互呢?

    事件总线和Vuex的区别在于:Vuex是对状态进行管理的而事件总线是对事件进行管理的。

    提供了一个全局事件中心,并将其注如每个组件中,像内置的事件流一样方便的使用全局事件

    工作原理就是使用发布/订阅方式

    1.事件总线的创建

    import Vue from 'vue'
    export const EventBus = new Vue() 

    创建一个全局的事件总线

    // main.js
    Vue.prototype.$EventBus = new Vue()

    2.发送消息

    EventBus.$emit("aMsg", '来自A页面的消息'); //A发送消息给B

    3.监听接收消息

    EventBus.$on("aMsg", (msg) => {// A发送来的消息
      this.msg = msg; //B监听接收到A的消息就是msg数据
    });

    4.移除事件

    EventBus.$off('aMsg', {})
    

    在Vue项目中创建一个EventBus,事件总线

    var EventBus = new Vue(); //事件总线据是一个全局的原型对象中的属性对象
     
    Object.defineProperties(Vue.prototype, {
      $bus: {
        get: function () {
          return EventBus
        }
      }
    })
    
    this.$bus.$emit('nameOfEvent', { ... pass some event data ...}); //调用原型属性进行数据发送和监听
     
    this.$bus.$on('nameOfEvent',($event) => {
      // ...
    })
    

      

  • 相关阅读:
    一行代码教你屏蔽你的博客广告
    一步一步教你给博客主页添加自定义炫酷效果
    让资源管理器变得像Chrome一样标签化
    weblayer组件介绍
    Tiny模板编辑器
    Tiny流程编辑器
    Tiny界面编辑器
    Tiny模板运行器
    org.tinygroup.pageflowbasiccomponent-页面流
    Tiny服务编辑器
  • 原文地址:https://www.cnblogs.com/panjingshuang/p/12096041.html
Copyright © 2020-2023  润新知