vue嵌套组件 $children和this.$parent

例如:


     
     
     
     
     
     
     
     
     
     
 

简单得实现了下下拉框得功能 具体得一些额外功能后期会完善

如何联动起来? 利用 c h i l d r e n 和 t h i s . children和this. childrenthis.parent
组件1:s-option 选中

  • {{label}}
  • methods:{ handleChooseLi(event){ this.$parent.$emit('handleOptionClick',[this.label,this.value]) //this.$parent 父组件 触发handleOptionClick自定义事件 }, handleOptionSelect(data){ this.isSelelct=data }, removeClassSelect(){ this.isSelelct=null; } }, created(){ this.$on('chooseOption', this.handleOptionSelect); //接受父组件发出得自定义事件 this.$on('removeClass', this.removeClassSelect);//接受父组件发出得自定义事件 }

    组件2:s-select

    绑定一个自定义事件
    mounted(){
            this.$on('handleOptionClick', this.handleOptionSelect);			//组件一中点击选项 这边事件就i会触发
        }
    
    handleOptionSelect(option, byClick) {
                 this.model=option[0];
                 this.$emit("input",option[1]);
                //  触发子组件选中
                this.$children.forEach(item=>{
                    item.$emit('removeClass',option[1])	//这个是所有子组件都触发得事件  主要作用是去除选中状态
                    if(option[1]==item.value){
                        item.$emit('chooseOption',option[1])
                    }
                })
                
            },
    

    再加上 自定义指令 v-clickOutSide=“handleCloseThis” 具体见我前面得博客
    这样就可以做出select 得效过了

    具体代码如下:
    组件1: s-option

    
    
    
    
    
    
    

    组件2:s-select

    
    
    
    
    
    
    

    你可能感兴趣的:(vue)