用vue2写一个tree模糊查询组件
时间: 2023-06-12 18:06:48 浏览: 49
好的,让我来回答一下。您可以使用Element UI提供的tree组件,并通过input框输入搜索关键字,在每个节点的label中匹配关键字,如果匹配到了则展开对应节点,否则不展开。具体实现如下:
```html
<template>
<div>
<el-input v-model="searchText"></el-input>
<el-tree
:data="data"
:props="defaultProps"
:filter-node-method="filterNode"
></el-tree>
</div>
</template>
<script>
import { mapGetters } from 'vuex';
export default {
data() {
return {
data: [{ // 树形数据
id: 1,
label: '一级 1',
children: [{
id: 4,
label: '二级 1-1',
children: [{
id: 9,
label: '三级 1-1-1'
}, {
id: 10,
label: '三级 1-1-2'
}]
}]
}],
defaultProps: { // 设置节点属性
children: 'children',
label: 'label'
},
searchText: '' // 搜索关键字
}
},
methods: {
// 过滤节点
filterNode(value, data) {
if (!value) return true;
return data.label.indexOf(value) !== -1;
}
}
}
</script>
```
在以上代码中,我们使用了Element UI提供的tree组件,并通过props设置节点的属性,通过filter-node-method实现节点的过滤。重要的部分是在filterNode方法中实现的,我们通过输入框中的搜索关键字对每个节点的label进行匹配,如果匹配成功则返回true,展开该节点,否则返回false,收起该节点。