找到组件 最近的指定父组件。找到组件 的所有指定子组件

 /**
     * 找到组件 最近的指定父组件
     * componentName:指定父组件名
     * eventName: 父组件触发事件
     * */

    Vue.prototype.$dispatch = function(componentName, eventName){
        let parent = this.$parent;
        while(parent){
            let name = parent.$options.name; //组件名
            if(name === componentName){ //找到了
                break;
            }else{
                parent = parent.$parent;
            }
        }
        if(parent){
            if(eventName){
                parent.$emit(eventName); //触发这个方法
            }
            return parent;
        }
    }
//找到组件 的所有指定子组件
    Vue.prototype.$broadcast = function(componentName, eventName){
        let children = this.$children;
        const arr = [];
        function findChildren(children){
            children.forEach(child=>{
                if(child.$options.name === componentName){
                    if(eventName){
                        child.$emit(eventName)
                    }
                    arr.push(child)
                }
                if(child.$children){ //把所有的儿子都找到
                    findChildren(child.$children)
                }
            })
        }
        findChildren(children)
        return arr;
    }

你可能感兴趣的:(javascript,vue.js,前端,javascript)