当前位置:首页 > VUE

vue实现表格搜索

2026-02-18 04:25:32VUE

Vue实现表格搜索功能

在Vue中实现表格搜索功能可以通过多种方式完成,以下介绍两种常见方法:基于计算属性和使用第三方库。

方法一:使用计算属性实现搜索

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索...">
    <table>
      <thead>
        <tr>
          <th>姓名</th>
          <th>年龄</th>
          <th>城市</th>
        </tr>
      </thead>
      <tbody>
        <tr v-for="item in filteredItems" :key="item.id">
          <td>{{ item.name }}</td>
          <td>{{ item.age }}</td>
          <td>{{ item.city }}</td>
        </tr>
      </tbody>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '张三', age: 25, city: '北京' },
        { id: 2, name: '李四', age: 30, city: '上海' },
        { id: 3, name: '王五', age: 28, city: '广州' }
      ]
    }
  },
  computed: {
    filteredItems() {
      return this.items.filter(item => {
        return (
          item.name.toLowerCase().includes(this.searchQuery.toLowerCase()) ||
          item.city.toLowerCase().includes(this.searchQuery.toLowerCase()) ||
          item.age.toString().includes(this.searchQuery)
        )
      })
    }
  }
}
</script>

方法二:使用Lodash实现防抖搜索

对于大数据量表格,可以使用Lodash的debounce函数优化性能。

vue实现表格搜索

import { debounce } from 'lodash'

export default {
  data() {
    return {
      searchQuery: '',
      items: [], // 原始数据
      filteredItems: [] // 过滤后的数据
    }
  },
  created() {
    this.debouncedFilter = debounce(this.filterItems, 300)
  },
  watch: {
    searchQuery(newVal) {
      this.debouncedFilter(newVal)
    }
  },
  methods: {
    filterItems(query) {
      this.filteredItems = this.items.filter(item => {
        return (
          item.name.toLowerCase().includes(query.toLowerCase()) ||
          item.description.toLowerCase().includes(query.toLowerCase())
        )
      })
    }
  }
}

方法三:使用Element UI表格搜索

如果使用Element UI组件库,可以结合其表格组件实现更丰富的搜索功能。

vue实现表格搜索

<template>
  <div>
    <el-input v-model="searchQuery" placeholder="请输入搜索内容" clearable></el-input>
    <el-table :data="filteredItems" style="width: 100%">
      <el-table-column prop="name" label="姓名"></el-table-column>
      <el-table-column prop="age" label="年龄"></el-table-column>
      <el-table-column prop="city" label="城市"></el-table-column>
    </el-table>
  </div>
</template>

方法四:服务端搜索实现

对于大数据量,建议使用服务端搜索:

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

方法五:多条件高级搜索

实现包含多个搜索条件的复杂搜索功能:

<template>
  <div>
    <div class="search-form">
      <el-input v-model="searchParams.name" placeholder="姓名"></el-input>
      <el-input v-model="searchParams.city" placeholder="城市"></el-input>
      <el-select v-model="searchParams.ageRange" placeholder="年龄范围">
        <el-option label="20-30" value="20-30"></el-option>
        <el-option label="30-40" value="30-40"></el-option>
      </el-select>
      <el-button @click="handleSearch">搜索</el-button>
    </div>
    <!-- 表格内容 -->
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchParams: {
        name: '',
        city: '',
        ageRange: ''
      }
    }
  },
  methods: {
    handleSearch() {
      // 根据searchParams过滤数据或调用API
    }
  }
}
</script>

以上方法可根据项目需求选择或组合使用,对于简单需求使用方法一即可,复杂场景可考虑服务端搜索或高级搜索功能。

标签: 表格vue
分享给朋友:

相关文章

vue卖座网实现

vue卖座网实现

Vue 卖座网实现 项目结构搭建 使用 Vue CLI 快速初始化项目,安装必要依赖如 Vue Router、Vuex、Axios。 创建核心目录结构:components(通用组件)、views(页…

vue实现列表显示

vue实现列表显示

Vue 实现列表显示的方法 在 Vue 中实现列表显示通常使用 v-for 指令,结合数组或对象数据渲染动态列表。以下是几种常见的实现方式。 基本列表渲染 通过 v-for 指令遍历数组,动态生成列…

vue实现画圆弧并着色

vue实现画圆弧并着色

在 Vue 中实现画圆弧并着色 使用 Canvas API 绘制圆弧 在 Vue 组件的 mounted 钩子中,通过 Canvas API 绘制圆弧。创建一个 canvas 元素并获取其上下文:…

vue实现积分

vue实现积分

Vue 实现积分功能 在 Vue 中实现积分功能通常涉及前端展示、交互逻辑以及与后端 API 的通信。以下是常见的实现方法和步骤: 积分展示组件 创建一个积分展示组件,用于显示当前用户的积分。可以使…

vue架构实现

vue架构实现

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

vue实现异步

vue实现异步

Vue 实现异步操作的常见方法 Vue 提供了多种方式来处理异步操作,包括数据获取、事件处理等场景。 使用 async/await 在 Vue 方法中可以直接使用 async/await 语法处理…