子组件里的两个子组件,初始第一个子组件有样式,然后点击随之相应的子组件有相应的样式
- 假设有好几个子容器,一开始一个容器的背景是pink,其他容器的背景没有,在点击的时候相应容器就有颜色,但是其他的容器没有颜色
思路:在vue中那肯定是注册子组件在父组件中,注册一个就可以了,复用,在可以通过父子传参改变内部数据,言归正传,上个问题分一下步骤:
- 给每个组件绑定数据通过.sync绑定父组件的数据为true 子组控制颜色显示:class = {active:isActive} isActive为true 就显示active的样式
- 那给第一个盒子绑定数据 :firstdiv.sync = "firstdiv" 父组件中fistdiv:true,其他的一样绑定 但是为false,
- 单点击的时候 直接this.emit触发父组件的数据绑定的firstdiv通过this.options.data.call(this).xxx 恢复为初始值,但是初始值 第一个还是true 那在通过for in 循环 全部设置为false,在重新赋值 this.xxx = const xxx ,那么点击的时候全部都是false
- 在通过触发this.$emit('update:xxx',true) 改变父组件数据 在传递子组件显示true
- 还有就是当是一个盒子里2个盒子 在一个组件 控制2个盒子不同 可以通过 .sync.a .sync.b 然后子组件传入实参 true /false 控制a和b 的不同显示 (实参? this.emit(′update:a′,true):this.emit('update:b', true))
以上只是个人在工作中看别人的写法 只是没事理了下逻辑,写下来。