zoukankan      html  css  js  c++  java
  • bus传值

    bus上可以定义一个事件,

    bus上可以触发事件

    不论是组件还是js模块,都可以用引入bus

    bus的意义就是,在多个组件存在复杂情况下,比如:a组件上点击一个按钮,要在毫不相关的y组件上弹出一个弹窗。如果用父子事件传递,$emit触发,会非常不方便。

    此时,可以如下操作:

    a组件:

    <button @click='$bus.$emit("alertEvent")'>btn</button>

    y组件:

    methods:{
    handleAlertEvent(){
    console.log("a组件的按钮点击了")}
    },
    created(){
      this.$bus.$on('alertEvent',handleAlertEvent)
    },
    beforeDestory(){

    this.$bus.$off('alertEvent',handleAlertEvent)

    }

    bus通常是一个vue对象;

    const app = new Vue()
    Vue.prototype.$bus = app;
    export default app;//让js模块里也可以用到,

    bus的源码简写

    const bus = {
      //事件名称和事件回调函数的对应;
      __events__: {},//这是一个以事件名作为属性名,属性值是元素是回调函数的set
      $on(event, fn) {
        if (!this.__events__[event]) {
          this.__events__[event] = new Set();
        }
        this.__events__[event].add(fn)
      },
      $off(event, fn) {
        this.__events__[event].delete(fn)
      },
      $emit(event) {
        const set = this.__events__[event];
        if (set) {
          set.forEach(item => item())
        }
      },
    
    };
  • 相关阅读:
    less 28-31
    less27 27a
    sqli 26 26a
    sqli lab 25 25a
    kail 更新源
    sqli lab 23 、24
    less 20 21 22
    less18 19
    less 17
    数字类型,字符串类型,列表类型
  • 原文地址:https://www.cnblogs.com/dangdanghepingping/p/14845819.html
Copyright © 2011-2022 走看看