動態的刷新 el-tree 的disabled屬性值


有個這樣的需求,點擊角色列表每一行,根據返回的roleTypeDictCode的值,控制右邊菜單分配樹選擇是否禁用;我已經做出來每次點擊,給節點加disabled了,但是菜單沒變,但是點擊樹的時候,其實disabled的屬性是加上的,不知道為什么沒有加載出來;

后來終於實現了:

methods:

// 觸發單選
    handleCurrentChange(val) {
      console.log('觸發單選')
      if (val) {
        this.isSelectData = val;
        console.log("菜單");
        console.log(this.menus);
        // 保存當前的角色id
        this.currentId = val.id;
        this.form.id = val.id;
        this.showButton = true; // this.level <= val.level
        // 初始化
        this.menuIds = val.menuIds;
        this.setCheckedKeys(val.menuIds);
        this.form.orgIdList = val.orgIds;
        this.filterData(this.menus,this.isSelectData)
        this.$nextTick(() => {
          this.menus=[];
          this.menus=this.$refs.menu.data
          this.$watch('menus',function(val){
            console.log('監聽menus')
            this.menus=this.$refs.menu.data
          })
        });
      }
    },
 
//給菜單的每個節點添加disabled的方法
filterData(treeData, val) {
      for (var i = 0; i < treeData.length; i++) {
             //let obj=treeData[i]
        if (val.roleTypeDictCode == "sec_secrecy") {
          // obj.disabled = false;      
          this.$set(treeData[i],"disabled",false)
        } else {
          if (treeData[i].roleTypeCode == val.roleTypeDictCode) {
            // obj.disabled = false;
             this.$set(treeData[i],"disabled",false)
          } else {
            // obj.disabled = true;
             this.$set(treeData[i],"disabled",true)
          }
        }
        if(treeData[i].children){
          this.filterData(treeData[i].children, val);
        }
      }
    },
 
走過的坑:一開始:我給菜單添加disabled屬性:obj.disabled = true;  菜單刷新不出來,
后面改為用:  this.$set(treeData[i],"disabled",false)  完美解決

 

 

 

 


 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM