有個這樣的需求,點擊角色列表每一行,根據返回的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) 完美解決
