当前位置:首页 > 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
  }
}

性能优化

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

import { debounce } from 'lodash'

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

vue实现表格筛选

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

相关文章

vue设计与实现 书

vue设计与实现 书

vue设计与实现 书 《Vue.js设计与实现》是一本深入探讨Vue.js框架内部原理和设计思想的书籍,适合希望深入理解Vue.js的开发者。以下是关于这本书的详细信息: 书籍内容 《Vue…

代码实现vue

代码实现vue

创建Vue项目 使用Vue CLI快速初始化项目,确保已安装Node.js和npm/yarn: npm install -g @vue/cli vue create my-vue-project…

vue实现tablegrid

vue实现tablegrid

Vue 实现 TableGrid 的方法 使用 Element UI 的 Table 组件 Element UI 提供了强大的 Table 组件,可以快速实现表格布局。安装 Element UI 后,…

vue tab实现

vue tab实现

Vue Tab 实现方法 使用动态组件实现 Tab 在 Vue 中可以通过动态组件 <component :is="currentTab"> 结合 v-for 和 v-bind 实现 Ta…

vue 实现全屏

vue 实现全屏

Vue 实现全屏功能 在 Vue 中实现全屏功能可以通过浏览器提供的 Fullscreen API 完成。以下是一个完整的实现方案: 安装依赖(可选) 如果需要跨浏览器兼容性更好,可以安装 scr…

vue实现flvvideo

vue实现flvvideo

vue-flv-player 实现 FLV 视频播放 安装依赖包 npm install flv.js vue-flv-player 基础组件引入 <template> <v…