ly-tree(childVisibleForFilterNode设置为true可以直接搜索时展示匹配项的所有子节点,不需要以下代码)要先设置属性isInjectParentInNode为tue挂载parent(父节点实例)---el-tree不需要设置,本身就有
然后代码如下:
//这是过滤方法
filterNode(value, data, node) {
//搜索框为空时收起
if (!value) {
var nodes = this.$refs.tree.store.nodesMap;
for (var i in nodes) {
nodes[i].expanded = false;
}
}
if (!value) return true;
let _array = []; //这里使用数组存储 只是为了存储值。
this.getReturnNode(node, _array, value);
let result = false;
_array.forEach((item) => {
result = result || item;
});
return result;
},
//node.data.name.toLowerCase().indexOf(value.toLowerCase()) !== -1是待表不区分字母大小写
getReturnNode(node, _array, value) {
let isPass =
node.data &&
node.data.name &&
(node.data.name.indexOf(value) !== -1 ||
node.data.name.toLowerCase().indexOf(value.toLowerCase()) !== -1);
isPass ? _array.push(isPass) : "";
if (!isPass && node.level != 1 && node.parent) {
this.getReturnNode(node.parent, _array, value);
}
},