当前位置:首页 > VUE

vue实现表格筛选

2026-02-17 11:20:53VUE

Vue 表格筛选实现方法

基于计算属性的筛选

在 Vue 中,可以通过计算属性对表格数据进行筛选。定义一个计算属性,根据筛选条件返回过滤后的数据。

<template>
  <div>
    <input v-model="searchQuery" placeholder="搜索...">
    <table>
      <tr v-for="item in filteredItems" :key="item.id">
        <td>{{ item.name }}</td>
        <td>{{ item.age }}</td>
      </tr>
    </table>
  </div>
</template>

<script>
export default {
  data() {
    return {
      searchQuery: '',
      items: [
        { id: 1, name: '张三', age: 25 },
        { id: 2, name: '李四', age: 30 }
      ]
    }
  },
  computed: {
    filteredItems() {
      return this.items.filter(item => 
        item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      )
    }
  }
}
</script>

使用第三方组件库

对于更复杂的表格筛选需求,可以使用 Element UI 或 Ant Design Vue 等组件库提供的表格组件。

<template>
  <el-table :data="tableData" style="width: 100%">
    <el-table-column prop="date" label="日期" sortable width="180">
    </el-table-column>
    <el-table-column prop="name" label="姓名" width="180">
      <template #header>
        <el-input v-model="searchName" size="mini" placeholder="输入姓名搜索"/>
      </template>
    </el-table-column>
  </el-table>
</template>

<script>
export default {
  data() {
    return {
      searchName: '',
      tableData: [{
        date: '2023-01-01',
        name: '王小虎'
      }]
    }
  }
}
</script>

多条件筛选

实现多条件筛选时,可以在计算属性中组合多个筛选条件。

computed: {
  filteredItems() {
    return this.items.filter(item => {
      const matchesSearch = item.name.toLowerCase().includes(this.searchQuery.toLowerCase())
      const matchesAge = item.age >= this.minAge && item.age <= this.maxAge
      return matchesSearch && matchesAge
    })
  }
}

服务端筛选

对于大数据量,建议将筛选逻辑放在服务端,通过 API 请求获取筛选后的数据。

methods: {
  async fetchFilteredData() {
    const response = await axios.get('/api/items', {
      params: {
        search: this.searchQuery,
        minAge: this.minAge,
        maxAge: this.maxAge
      }
    })
    this.items = response.data
  }
}

性能优化

对于大型数据集,可以使用防抖技术减少频繁筛选带来的性能问题。

vue实现表格筛选

import { debounce } from 'lodash'

export default {
  methods: {
    fetchFilteredData: debounce(function() {
      // API 调用
    }, 500)
  }
}

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

相关文章

vue 实现grid

vue 实现grid

在Vue中实现Grid布局可以通过多种方式完成,以下是几种常见的方法: 使用CSS Grid布局 CSS Grid是一种强大的布局系统,可以直接在Vue组件的样式中使用。以下是一个简单的示例:…

vue实现flbook

vue实现flbook

Vue 实现类似 Flbook 的翻页效果 要实现类似 Flbook 的翻页效果,可以使用 Vue 结合 CSS 动画和 JavaScript 事件处理。以下是实现方法: 安装依赖 需要安装 vue…

vue实现评价

vue实现评价

Vue实现评价功能 数据绑定与双向绑定 Vue的核心特性是数据绑定和双向绑定,通过v-model指令可以轻松实现表单输入与应用状态之间的双向绑定。在评价功能中,可以使用v-model绑定评论文本和评分…

vue实现音乐

vue实现音乐

Vue实现音乐播放功能 使用Vue实现音乐播放功能可以通过多种方式完成,以下是几种常见的实现方法: 使用HTML5 Audio API 在Vue组件中直接使用HTML5的Audio对象来控制音乐播放…

vue实现左右拉伸

vue实现左右拉伸

实现左右拉伸布局的方法 使用CSS Flexbox布局 Flexbox可以轻松实现左右拉伸的效果。通过设置display: flex和flex-grow属性,可以让元素填充可用空间。 <div…

vue实现拦截登录

vue实现拦截登录

Vue 实现登录拦截的方法 使用路由守卫进行拦截 Vue Router 提供了全局前置守卫 beforeEach,可以在路由跳转前进行验证。在路由配置文件中添加以下代码: import router…