当前位置:首页 > VUE

vue实现搜索查询

2026-03-07 17:39:19VUE

Vue实现搜索查询的方法

数据绑定与输入处理

在Vue中实现搜索功能,通常使用v-model指令绑定输入框的值到数据属性。创建一个searchQuery数据属性来存储用户输入:

data() {
  return {
    searchQuery: '',
    items: [...] // 原始数据列表
  }
}

模板中使用v-model绑定:

<input v-model="searchQuery" placeholder="搜索...">

计算属性过滤数据

利用Vue的计算属性实时过滤数据,避免直接修改原始数组。当searchQuery变化时,计算属性自动更新:

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

方法调用实现搜索

如果需要手动触发搜索(如点击按钮),可以使用方法替代计算属性:

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

模板中添加按钮触发:

<button @click="performSearch">搜索</button>

使用watch监听查询变化

当搜索逻辑较复杂或需要异步操作时,可以使用watch监听searchQuery变化:

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

防抖优化性能

频繁输入时通过防抖减少计算次数,使用lodash.debounce或自定义实现:

import debounce from 'lodash.debounce'

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

服务端搜索实现

对于大数据量,建议通过API请求服务端搜索:

vue实现搜索查询

methods: {
  async searchFromServer() {
    const response = await axios.get('/api/search', {
      params: { q: this.searchQuery }
    })
    this.filteredItems = response.data
  }
}

标签: vue
分享给朋友:

相关文章

vue 绑定实现

vue 绑定实现

Vue 绑定实现 Vue 提供了多种数据绑定的方式,包括文本插值、属性绑定、事件绑定、双向绑定等。以下是常见的绑定实现方法: 文本插值 使用双大括号 {{ }} 进行文本插值,将数据动态渲染到 DO…

vue实现颜色闪烁

vue实现颜色闪烁

实现颜色闪烁的方法 在Vue中实现颜色闪烁效果可以通过CSS动画或JavaScript定时器动态修改样式。以下是两种常见的实现方式: 使用CSS动画实现 通过定义@keyframes动画规则,结合V…

vue实现定位打卡

vue实现定位打卡

Vue 实现定位打卡功能 获取用户地理位置 使用浏览器提供的 Geolocation API 获取用户当前位置坐标。在 Vue 组件中可以通过 navigator.geolocation 调用。 m…

vue路由实现介绍

vue路由实现介绍

Vue 路由实现介绍 Vue Router 是 Vue.js 官方的路由管理器,用于构建单页面应用(SPA)。它通过动态映射组件到路由实现页面无刷新切换,同时支持嵌套路由、路由参数、导航守卫等高级功能…

vue实现组件封装

vue实现组件封装

Vue 组件封装方法 封装组件的基本步骤 创建独立的 .vue 文件,包含 template、script 和 style 三个部分。通过 props 接收父组件传递的数据,使用 $emit 触发自…

vue实现问卷调查

vue实现问卷调查

Vue 实现问卷调查的方法 使用 Vue CLI 创建项目 通过 Vue CLI 快速初始化一个 Vue 项目,确保已安装 Node.js 和 npm/yarn。 vue create survey…