遍历tree树 并对当前选中项下的所有子目录添加disabled使其禁止选中
mounted:
methods:
tickMenuIdFilter: function() {
var id = this.id; //当前选中的id
var resultArr = new Array();
var getTick = function(obj) {
//遍历所有的目录并添加属性disabled = true
if (undefined == obj || null == obj || !obj instanceof Object) {
return;}
if (null != obj.subs && obj.subs instanceof Array) {
for (let child of obj.subs) {
child.disabled = true;
getTick(child); //回调
}
}
};
var getTickMenuId = function(obj) {
//id不是当前选中的所有目录 disabled = false
if (undefined == obj || null == obj || !obj instanceof Object) {
return;
}
if (obj.id === parseInt(id)) {
obj.disabled = true;
}
if (null != obj.subs && obj.subs instanceof Array && obj.id !== parseInt(id)) {
obj.disabled = false;
for (let child of obj.subs) {
child.disabled = false;
getTickMenuId(child);
}
}
};
return{
filter: function(arr) {
//过滤 如果为父级return arr[] 为子级则return false
if (!arr instanceof Array) {
return false;
}
resultArr = new Array();
for (let rootMenu of arr) {
getTick(rootMenu);
getTickMenuId(rootMenu);
}
return resultArr;
}
};
},