当前位置:首页 > VUE

vue搜索功能实现

2026-03-07 18:19:12VUE

实现Vue搜索功能的方法

基础搜索实现

在Vue组件中声明一个搜索词数据属性和一个列表数据属性

data() {
  return {
    searchQuery: '',
    items: [
      { id: 1, name: 'Apple' },
      { id: 2, name: 'Banana' },
      { id: 3, name: 'Orange' }
    ]
  }
}

使用计算属性实现过滤逻辑

computed: {
  filteredItems() {
    return this.items.filter(item => 
      item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
    )
  }
}

在模板中使用v-model绑定搜索输入框

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

高级搜索功能

实现多字段搜索

vue搜索功能实现

computed: {
  filteredItems() {
    const query = this.searchQuery.toLowerCase()
    return this.items.filter(item => 
      item.name.toLowerCase().includes(query) ||
      item.description.toLowerCase().includes(query)
    )
  }
}

添加搜索延迟(防抖)

import _ from 'lodash'

methods: {
  search: _.debounce(function(query) {
    this.searchQuery = query
  }, 500)
}

服务器端搜索

使用axios发送搜索请求

vue搜索功能实现

methods: {
  async searchItems() {
    try {
      const response = await axios.get('/api/items', {
        params: { q: this.searchQuery }
      })
      this.items = response.data
    } catch (error) {
      console.error(error)
    }
  }
}

添加搜索按钮触发

<input v-model="searchQuery" @keyup.enter="searchItems">
<button @click="searchItems">Search</button>

搜索建议实现

添加搜索建议功能

data() {
  return {
    suggestions: [],
    showSuggestions: false
  }
},
methods: {
  async getSuggestions() {
    if(this.searchQuery.length > 2) {
      const response = await axios.get('/api/suggestions', {
        params: { q: this.searchQuery }
      })
      this.suggestions = response.data
      this.showSuggestions = true
    }
  }
}

在模板中显示建议

<ul v-if="showSuggestions && suggestions.length">
  <li 
    v-for="suggestion in suggestions" 
    :key="suggestion.id"
    @click="selectSuggestion(suggestion)"
  >
    {{ suggestion.name }}
  </li>
</ul>

标签: 搜索功能vue
分享给朋友:

相关文章

vue实现网页切换

vue实现网页切换

Vue 实现网页切换的方法 在 Vue 中实现网页切换通常可以通过以下几种方式完成,具体取决于项目需求和路由管理方式。 使用 Vue Router Vue Router 是 Vue.js 官方提供的…

vue架构实现

vue架构实现

Vue 架构实现核心方案 Vue.js 的架构实现通常围绕模块化、组件化和状态管理展开。以下为常见实现方案: 基于单文件组件(SFC)的模块化 通过 .vue 文件组织模板、脚本和样式: <…

vue 实现递归

vue 实现递归

Vue 实现递归组件的方法 在 Vue 中实现递归组件通常用于处理树形结构数据,例如菜单、评论列表或文件目录。以下是实现递归组件的关键步骤: 定义递归组件 递归组件需要设置 name 属性,以便在模…

vue实现剪辑

vue实现剪辑

Vue 实现视频剪辑功能 在Vue中实现视频剪辑功能通常需要结合HTML5的<video>元素和第三方库(如FFmpeg.js或Video.js)。以下是几种常见的实现方法: 使用FFm…

vue实现接口

vue实现接口

在 Vue 中实现接口请求 Vue 本身不直接提供 HTTP 请求功能,通常需要借助第三方库如 axios 或 fetch 来实现接口请求。以下是几种常见方法: 使用 axios 发送请求 安装 a…

vue 实现拖拉

vue 实现拖拉

Vue 实现拖拽功能的方法 使用 HTML5 原生拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 dr…