当前位置:首页 > VUE

vue实现简单搜索

2026-03-08 19:25:39VUE

实现简单搜索功能

在Vue中实现搜索功能通常需要结合v-model绑定输入框数据,并通过计算属性或方法过滤列表。以下是一个基础实现示例:

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索..." />
    <ul>
      <li v-for="item in filteredList" :key="item.id">
        {{ item.name }}
      </li>
    </ul>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '苹果' },
        { id: 2, name: '香蕉' },
        { id: 3, name: '橙子' }
      ]
    }
  },
  computed: {
    filteredList() {
      return this.items.filter(item => 
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

优化搜索性能

对于大数据量列表,可以添加防抖处理避免频繁触发过滤计算:

import { debounce } from 'lodash'

export default {
  methods: {
    filterItems: debounce(function() {
      this.filteredItems = this.items.filter(item =>
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }, 300)
  },
  watch: {
    searchQuery() {
      this.filterItems()
    }
  }
}

多字段搜索

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

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

服务端搜索

当数据量很大时,应该考虑服务端搜索:

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

添加搜索提示

可以使用第三方库实现自动完成功能:

<vue-autocomplete
  v-model="searchQuery"
  :items="suggestions"
  @search="fetchSuggestions"
/>

样式优化

为搜索框添加基础样式:

vue实现简单搜索

input[type="search"] {
  padding: 8px 12px;
  border: 1px solid #ddd;
  border-radius: 4px;
  width: 300px;
}

以上实现可以根据具体需求进行组合和扩展,构建出适合项目的搜索功能。

标签: 简单vue
分享给朋友:

相关文章

django vue实现

django vue实现

Django与Vue.js整合实现方案 Django作为后端框架与Vue.js作为前端框架的整合,可以通过以下方式实现: 分离式开发 前后端完全分离,Django仅提供API接口,Vue.js通过a…

vue 实现打印

vue 实现打印

Vue 实现打印功能的方法 在Vue项目中实现打印功能,可以通过以下几种方式实现: 使用window.print()方法 通过调用浏览器的原生打印API实现基础打印功能,适用于简单内容打印。 //…

vue实现快手

vue实现快手

Vue 实现类似快手的功能 Vue.js 是一个渐进式 JavaScript 框架,适合构建复杂的单页应用。要实现类似快手的功能,可以结合 Vue 和相关技术栈进行开发。 核心功能模块 视频流展示…

vue实现banner

vue实现banner

Vue实现Banner轮播 使用Vue实现Banner轮播可以通过第三方库如swiper或vue-awesome-swiper,也可以手动实现基础轮播效果。以下是两种常见方法: 使用vue-…

vue界面实现滚动

vue界面实现滚动

实现滚动的基本方法 在Vue中实现滚动效果可以通过多种方式完成,包括使用原生CSS、JavaScript或第三方库。以下是一些常见的实现方法: 使用CSS实现滚动 通过CSS的overflow属性可…

vue实现按钮渐变

vue实现按钮渐变

实现按钮渐变的几种方法 使用CSS线性渐变 通过CSS的background属性结合linear-gradient函数实现颜色渐变效果。在Vue组件的<style>部分直接定义样式: .…