关于 vue tree 勾选全部的疑问

 引用父组件:
<vue-tree :data='routerList'></vue-tree>
子组件:
    <template>
    <ul class="vue-tree">
        <li :class="['vue-tree-li', item.type == 0 ? 'type0' :'type1']" v-for="(item, index) in data">
            <div :class="['children', !item.children ? 'forward' : '']">
                <div  :class="[item.children && item.children.length > 0 ? '' : 'forward']">
                    <span :class="[ 'arrow-right',item.show ? 'arrow-down' : '']" v-if="item.children && item.children.length > 0"></span>
                    <el-checkbox v-model="item.checked" @change="checkedBtn(item,index,data)"></el-checkbox>
                    <span @click="getTrees(item, index)" >{{item.routeName}}</span>
                </div>
            </div>
            <myTree :data='item.children' v-if='item.show'></myTree>
        </li>
    </ul>
</template>
<script>
    export default {
        name: 'myTree',
        props: ['data'],
        methods: {
            getTrees(item,index) {
                this.$set(this.data[index], 'show', this.data[index].show === undefined ? true : !this.data[index].show);
            },
            /*
             * 选中框
             */
            checkedBtn(item, index ,data){
                let itemChecked = item['checked'];
                if (item['children'] && item['children'].length){
                    for (let i in item['children']){
                        let checked = item['children'][i];
                        this.$set(this.data[index]['children'][i], 'checked', this.data[index]['children'][i]['checked'] === undefined ? true : !this.data[index]['children'][i]['checked']);
                    }
                } else {
                    if (this.data[index].checked === undefined){
                        this.$set(this.data[index], 'checked', this.data[index].checked = true);
                    } else {
                        this.$set(this.data[index], 'checked', this.data[index].checked ? true : false);
                    }
                }
            }
        }
    }
</script>

clipboard.png

需要实现的效果是跟 http://element.eleme.io/#/zh-... 一样的效果
我现在无法做到全选和全选中后,子集取消选中,父级也需要跟着取消选中。。。

阅读 3.1k
1 个回答

所有的选中控制操作都不要自己控制,全部交给props,每次选中都是通过事件上传状态,自顶向下赋值

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题