javascript vue自行实现broadcast,dispatch

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了javascript vue自行实现broadcast,dispatch相关的知识,希望对你有一定的参考价值。

function broadcast(componentName, eventName, data) {
    this.$children.forEach(child => {
        let name = child.$options.name
        if (name === componentName) {
            // child.$emit.call(child, eventName, data)
            child.$emit(eventName, data)
        } else {
            broadcast.call(child, componentName, eventName, data)
        }
    })
}

function dispatch(componentName, eventName, data) {
    let parent = this.$parent || this.$root
    let name = parent.$options.name

    while (parent && name !== componentName) {
        parent = parent.$parent
        if (parent) {
            name = parent.$options.name
        }
    }

    if (parent) {
        parent.$emit.call(parent, eventName, data)
    }
}

export default {
    methods: {
        broadcast(componentName, eventName, data) {
            broadcast.call(this, componentName, eventName, data)
        },
        dispatch(componentName, eventName, data) {
            dispatch.call(this, componentName, eventName, data)
        }
    }
}

以上是关于javascript vue自行实现broadcast,dispatch的主要内容,如果未能解决你的问题,请参考以下文章

vue-router原理剖析之自行实现router

vue-router原理剖析之自行实现router

vue之自行实现派发与广播-dispatch与broadcast

基于Springboot+vue开发实现自行车租赁管理系统

基于Java+SpringBoot+vue+node.js实现自行车租赁平台管理系统

基于Java+SpringBoot+vue+node.js实现自行车租赁平台管理系统