当前位置:首页 > VUE

vue模糊查询实现

2026-02-19 03:51:46VUE

实现 Vue 模糊查询的方法

使用计算属性实现模糊查询

在 Vue 中,可以利用计算属性和 JavaScript 的 filter 方法实现模糊查询。首先需要准备数据源和搜索关键词。

data() {
  return {
    searchText: '',
    items: [
      { id: 1, name: 'Apple' },
      { id: 2, name: 'Banana' },
      { id: 3, name: 'Orange' }
    ]
  }
},
computed: {
  filteredItems() {
    if (!this.searchText) return this.items
    return this.items.filter(item => 
      item.name.toLowerCase().includes(this.searchText.toLowerCase())
    )
  }
}

在模板中使用 v-model 绑定搜索输入框,并展示过滤后的结果:

<input v-model="searchText" placeholder="Search...">
<ul>
  <li v-for="item in filteredItems" :key="item.id">
    {{ item.name }}
  </li>
</ul>

使用 Lodash 的防抖优化性能

对于大数据量或频繁输入的搜索,可以使用 Lodash 的 debounce 方法优化性能。

vue模糊查询实现

import { debounce } from 'lodash'

methods: {
  search: debounce(function() {
    // 搜索逻辑
  }, 500)
}

实现多字段模糊查询

如果需要同时搜索多个字段,可以扩展过滤逻辑:

computed: {
  filteredItems() {
    if (!this.searchText) return this.items
    const search = this.searchText.toLowerCase()
    return this.items.filter(item => 
      item.name.toLowerCase().includes(search) ||
      item.description.toLowerCase().includes(search)
    )
  }
}

使用第三方库实现高级搜索

对于更复杂的搜索需求,可以考虑使用专门的搜索库如 Fuse.js:

vue模糊查询实现

import Fuse from 'fuse.js'

data() {
  return {
    fuse: null,
    // 其他数据
  }
},
created() {
  this.fuse = new Fuse(this.items, {
    keys: ['name', 'description'],
    threshold: 0.4
  })
},
computed: {
  filteredItems() {
    if (!this.searchText) return this.items
    return this.fuse.search(this.searchText).map(result => result.item)
  }
}

服务器端模糊查询

对于大量数据,建议将搜索逻辑放在服务器端:

methods: {
  async searchItems() {
    const response = await axios.get('/api/items', {
      params: { q: this.searchText }
    })
    this.filteredItems = response.data
  }
}

在输入框上添加事件监听:

<input 
  v-model="searchText" 
  @input="searchItems" 
  placeholder="Search...">

以上方法可以根据实际需求选择或组合使用,实现 Vue 中的模糊查询功能。

标签: 模糊vue
分享给朋友:

相关文章

vue设计与实现目录

vue设计与实现目录

以下是《Vue设计与实现》一书的典型目录结构(根据常见技术书籍及Vue核心内容整理): 响应式系统 响应式数据的基本原理 依赖收集与触发更新 实现简易响应式系统 Proxy与Reflec…

vue路由实现内部切换

vue路由实现内部切换

Vue 路由实现内部切换的方法 Vue Router 是 Vue.js 官方的路由管理器,用于实现单页应用(SPA)的页面切换。以下是几种常见的内部路由切换方式: 使用 <router-lin…

vue实现菜单栏锚点

vue实现菜单栏锚点

实现锚点菜单的基本思路 在Vue中实现菜单栏锚点功能,主要涉及两个方面:创建可跳转的锚点位置,以及菜单项的点击滚动控制。通过监听滚动事件可以高亮当前可见区域的对应菜单项。 创建页面锚点位置 在需要跳…

vue实现ai

vue实现ai

Vue 实现 AI 功能 Vue.js 可以通过集成第三方 AI 服务或本地 AI 模型来实现 AI 功能。以下是几种常见的方法: 集成第三方 AI API 使用 Vue 调用如 OpenAI、Go…

vue实现效果

vue实现效果

以下是Vue实现常见效果的几种典型方法,分为不同场景说明: 数据绑定与响应式更新 使用v-model实现表单双向绑定: <template> <input v-model="…

vue实现模块

vue实现模块

Vue 实现模块化的方法 Vue 支持多种模块化开发方式,可以根据项目需求选择适合的方案。 使用单文件组件(SFC) 单文件组件是 Vue 最常用的模块化方式,将模板、脚本和样式封装在一个 .vue…