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

 /**
     * 找到组件 最近的指定父组件
     * 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;
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值