el-tree回显问题

1年前 (2022) 程序员胖胖胖虎阿
134 0 0

看下面代码,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
选中,然后父节点会根据叶子节点的情况自动半选或者全选,

但是效果就不尽人意,

el-tree回显问题

我在思考是不是这时候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);

el-tree回显问题

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

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

版权声明:程序员胖胖胖虎阿 发表于 2022年11月13日 下午7:16。
转载请注明:el-tree回显问题 | 胖虎的工具箱-编程导航

相关文章

暂无评论

暂无评论...