账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    element tree 懒加载更新节点后check-change事件触发多次
    42
    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;
                        //点击已经选中的节点,置空
                    }
       }
    }

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

    0
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 在Element Tree中,如果一个元素的check-change事件被触发多次,可能是因为这个元素的属性或者值发生了变化。这是因为Element Tree会定期检查元素的属性和值是否满足某个条件,如果满足,则触发check-change事件。

      如果你发现元素的check-change事件被触发多次,你可以尝试以下几种方法来解决这个问题:

      1. check-change事件触发时,检查元素的属性和值是否满足你的需求,如果有,那么不需要再次触发check-change事件。

      2. 如果元素的属性或者值发生了变化,你可以直接修改这个元素的属性或者值,然后重新触发check-change事件。

      3. 如果元素的check-change事件被触发多次,可能是由于其他原因引起的,例如网络问题、DOM解析错误等。你可以尝试在check-change事件触发后,检查一下元素的DOM结构和内容,看是否有异常。

      4. 如果你无法确定问题的原因,你可以尝试使用Element Tree的开发者工具,查看元素的check-change事件触发的详细信息,找出可能的问题原因。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部