element tree 懒加载更新节点后check-change事件触发多次

发布于 2022-09-11 19:59:41 字数 1503 浏览 21 评论 0

**********************html******************
<el-tree            
              :props="props"
              :load="loadOrign"
              node-key="id"
              show-checkbox
              lazy
              check-strictly
              ref="orign"
              :key="treeKey"
              @check-change="handleChange"></el-tree>
**********************js********************
loadOrign(node, resolve) {
        if (node.level === 0) {
          return resolve([{ name: 'region' }]);
        }
        if (node.level > 1) return resolve([]);

        setTimeout(() => {
          const data = [{
            name: 'leaf',
            leaf: true
          }, {
            name: 'zone'
          }];

          resolve(data);
        }, 500);
      }
    }
    
  handleChange(data, checked, node) { 
    this.i++;
    console.log(111) 《===============如果子节点有三项handleChange就会执行三遍
    if(this.i%2==0){                   
                if(checked){
                    this.$refs.orign.setCheckedNodes([]);《===============通过这种方式更新树形结构                            
                                                         和loadOrign中reslove这样是不是冲突
                    this.$refs.orign.setCheckedNodes([data]);
                    return;
                    //交叉点击节点
                }else{
                    this.$refs.orign.setCheckedNodes([]);
                    return;
                    //点击已经选中的节点,置空
                }
   }
}

问题都在代码里了,谢谢!

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

甜嗑 2022-09-18 19:59:41

我今天做东西的时候也出现了这个问题。

我要实现的是当节点状态改变的时候使用 `getCheckedNodes` 方法来获取所有选中节点的数据,但是当子节点改变的时候父节点的状态也都会改变,有多少级父节点就会触发多少次。
我吧 `check-change` 件(当节点状态改变触发) 改变为 `check` 件(当点点击节点的时候触发),然后调用`getCheckedNodes`方法来获取数据就不会因为父节点状态改变而多次触发事件.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文