关于前端:eltree回显问题

31次阅读

共计 930 个字符,预计需要花费 3 分钟才能阅读完成。

看上面代码,el-tree 中回显问题,暗藏的弹窗中曾经有全副的权限,当初在点击编辑权限,弹窗展现,默认勾选出曾经选中的权限


       let selectId = res.data.data.checkList; 权限 id 以后领有 [1,2,3]
        this.$nextTick(() => {selectId.forEach((item) => {const node = this.$refs["menuListTree"].getNode(item);  依据 id 获取对应 node 节点
            if (node?.isLeaf) {   isLeaf 这个属性意思是如果是叶子节点就是 true, 而后能够依据这个设置回显,那么他父节点会主动半选或者全选依据叶子节点
              this.$refs["menuListTree"].setChecked(node, true);
            }
          });
        });

这个代码我感觉逻辑是没有问题的,返回全副权限 id,而后依据 getNode(id)获取对应的 node 节点,而后 node 节点上有一个属性 isLeaf, true 的话这个节点就是叶子节点,那么就设置这个节点 setChecked
选中,而后父节点会依据叶子节点的状况主动半选或者全选,

然而成果就不尽人意,

我在思考是不是这时候 dom 还没渲染实现呢,然而我加了 nextTick 呀,所以我后面有加了一个定时器, 而后奇观就呈现了

  let selectId = res.data.data.checkList; // 权限 id 以后领有 [1,2,3]
     setTimeout(() => {this.$nextTick(() => {selectId.forEach((item) => {const node = this.$refs["menuListTree"].getNode(item); // 依据 id 获取对应 node 节点
            if (node?.isLeaf) { //isLeaf 这个属性意思是如果是叶子节点就是 true, 而后能够依据这个设置回显,那么他父节点会默认半选或者全选依据叶子节点
              this.$refs["menuListTree"].setChecked(node, true);
            }
          });
        });
     }, 100);

看到能获取到 node 节点,并且能选中了

所以想问下大家,这里到底怎么写好,这个起因是什么?

正文完
 0