• vue2 broadcast和dispatch的理解


    /*
     broadcast 事件广播
     @param {componentName} 组件名称
     @param {eventName} 事件名
     @param {params} 参数
     遍历寻找所有子孙组件,假如子孙组件和componentName组件名称相同的话,则触发$emit的事件方法,数据为 params.
     如果没有找到 则使用递归的方式 继续查找孙组件,直到找到为止,否则继续递归查找,直到找到最后一个都没有找到为止。 
     */
    function broadcast(componentName, eventName, params) {
      this.$children.forEach(child => {
        const name = child.$options.name;
        if (name === componentName) {
          child.$emit.apply(child, [eventName].concat(params));
        } else {
          broadcast.apply(child, [componentName, eventName].concat([params]));
        }
      })
    }
    /* 
     * dispatch 查找所有父级,直到找到要找到的父组件,并在身上触发指定的事件。
     @param { componentName } 组件名称
     @param { eventName } 事件名
     @param { params } 参数
     */
    export default {
      methods: {
        dispatch(componentName, eventName, params) {
          let parent = this.$parent || this.$root;
          let name = parent.$options.name;
    
          while (parent && (!name || name !== componentName)) {
            parent = parent.$parent;
    
            if (parent) {
              name = parent.$options.name;
            }
          }
          if (parent) {
            parent.$emit.apply(parent, [eventName].concat(params));
          }
        },
        broadcast(componentName, eventName, params) {
          broadcast.call(this, componentName, eventName, params);
        }
      }
    };
  • 相关阅读:
    在IIS上搭建WebSocket服务器(一)
    ngnix 一 入门指南
    博客园的打赏功能
    Java基础(十)内部类
    Java虚拟机之垃圾回收详解一
    Servlet问题:servlet cannot be resolved to a type解决办法
    WIN7局域网文件共享设置方法
    基于tcp的socket通信
    java基础之抽象类的介绍
    Hdfs详解
  • 原文地址:https://www.cnblogs.com/cpqwebfe/p/7714600.html
Copyright © 2020-2023  润新知