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

**********************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;
                    //点击已经选中的节点,置空
                }
   }
}

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

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