当前位置:首页 > 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中实现导航切换内容,可以通过以下方式实现: 使用动态组件 动态组件通过<component :is="currentComponent">实现内容切…

vue实现发表

vue实现发表

Vue 实现发表功能 在 Vue 中实现发表功能通常涉及表单处理、数据绑定和网络请求。以下是实现步骤和代码示例: 表单设计与数据绑定 创建一个表单用于输入发表内容,使用 v-model 进行数据双向…

vue实现框架

vue实现框架

Vue 框架实现的核心方法 基础项目搭建 使用 Vue CLI 或 Vite 快速初始化项目。Vue CLI 适合传统项目,Vite 更适合现代轻量级应用。安装后通过命令行工具选择所需配置(如 Rou…

vue实现新闻

vue实现新闻

Vue 实现新闻功能 使用 Vue 实现新闻功能通常涉及新闻列表展示、新闻详情页、分类筛选等模块。以下是实现的基本思路和代码示例。 新闻列表展示 通过 Vue 组件展示新闻列表,通常使用 v-for…

vue 实现级联

vue 实现级联

Vue 实现级联选择器 级联选择器(Cascader)常用于省市区选择、分类选择等场景。Vue 中可以通过 Element UI、Ant Design Vue 等 UI 库实现,也可以手动封装。 使…

vue路由实现

vue路由实现

Vue 路由实现 Vue Router 是 Vue.js 的官方路由管理器,用于构建单页面应用(SPA)。以下是 Vue Router 的基本实现步骤和核心功能。 安装 Vue Router 通过…