ayiaq1 / el-tree-select

基于element-ui2.x扩展下拉树
224 stars 94 forks source link

多选时取消选中节点的bug #56

Closed cdfan closed 3 years ago

cdfan commented 3 years ago

反馈一个bug; 在多选时会有一个问题,当一个父节点下有多个子节点的情况下,如果将父节点和该父节点下所有的子节点都选中,这个时候如果想要通过输入框中选中节点的删除符号删除某个子节点会发现无法删除。不过如果直接删除父节点是可以的,并且当父子节点没有关联的情况下删除也没有问题。

例如下面的例子,当深圳分公司下所有的节点都选中,如果要点击输入框中的节点删除按钮来去掉选中,会发现点击没有反应,我觉得应该是在删除子节点的时候没有一并删除父节点,由于父节点处于选中状态导致他下面的所有子节点一直处于选中状态,所以才会点击删除没有反应,还望作者能够修改一下这个问题,谢谢 Snipaste_2020-09-27_17-39-57

ayiaq1 commented 3 years ago

element-ui bug. 如果是父子节点全选 el.setCheckedKeys([非全量id]);之后el.getCheckedNodes()还是全量 晚点时候更新npm.你如果不是npm安装可以在方法_setSelectNodeFun这里覆盖代码:

 if (multiple) {
                // element-ui bug. 如果是父子节点全选 el.setCheckedKeys([非全量id]);之后el.getCheckedNodes()还是全量
                el.getCheckedNodes().forEach(item => {
                    el.setChecked(item, false);
                });
                ids.forEach(id => {
                    el.setChecked(id, true);
                });
                    const nodes = el.getCheckedNodes();
                    if (this.propsCode) {
                        // 如果有code   labels=code(name)
                        this.labels = nodes.map(item => (item[this.propsCode] ? item[this.propsLabel] + '(' + item[this.propsCode] + ')' : item[this.propsLabel])) || [];
                    } else {
                        this.labels = nodes.map(item => item[this.propsLabel]) || [];
                    }
            }
ayiaq1 commented 3 years ago

3.1.9 npm已同步更新