vue filter实现搜索
Vue 过滤器实现搜索功能
在Vue中,过滤器(Filters)通常用于文本格式化,但结合计算属性或方法,可以实现简单的搜索功能。以下是具体实现方法:
定义搜索过滤器
在Vue实例或组件中定义过滤器:
filters: {
searchFilter(value, searchTerm) {
if (!searchTerm) return value
return value.filter(item =>
item.name.toLowerCase().includes(searchTerm.toLowerCase())
)
}
}
使用计算属性优化

更推荐使用计算属性实现搜索,性能更好:
computed: {
filteredItems() {
return this.items.filter(item =>
item.name.toLowerCase().includes(this.searchTerm.toLowerCase())
)
}
}
模板中使用
在模板中绑定搜索输入和结果展示:

<input v-model="searchTerm" placeholder="搜索...">
<ul>
<li v-for="item in filteredItems" :key="item.id">
{{ item.name }}
</li>
</ul>
多字段搜索实现
扩展计算属性支持多字段搜索:
computed: {
filteredItems() {
return this.items.filter(item => {
const term = this.searchTerm.toLowerCase()
return (
item.name.toLowerCase().includes(term) ||
item.description.toLowerCase().includes(term)
)
})
}
}
注意事项
- 搜索功能建议优先使用计算属性而非过滤器
- 对大型数据集考虑添加防抖(debounce)优化性能
- 复杂搜索需求可考虑使用专用搜索库如Fuse.js






