element-plus表格使用:filter-method过滤导致出现无数据

前端表格进行过滤

背景介绍:我们表格的过滤是后端做的

但是不知道为啥,在进行迁移的时候

表格过滤写上了 @filter-change="handleFilterChange"变成了前端过滤,

导致服务端返回数据后,表格显示的却是:暂无数据 解决办法:去掉 @filter-change="handleFilterChange" 不要变成前端过滤

ini 复制代码
<template>
  <div>
    <el-button type="primary" @click="setTableData">设置数据</el-button>
     <el-table
          ref="normalTable"
          :data="tableData"  
          style="width: 100%" 
          max-height="440px"
          @filter-change="handleFilterChange"
        >
          <el-table-column
            v-for="(column, index) in tableDataOption"
            :key="index"
            :prop="column.prop"
            :label="column.label"
            :min-width="120"
            :column-key="column.prop"
            :filters="column.filter ? column.filterOptions : null"
            :filter-multiple=" false"
            :filter-method="column.filter ? filterHandler : null"
          />
        </el-table>
  </div>
</template>
<script setup lang="ts">
import { ref } from 'vue';


let tableData = ref<any[]>([])
const tableDataOption = ref<any[]>([])
// 过滤方法
const filterHandler = (value: any, row: any, column: any) => {
  const property = column.property
  // 过滤方法,返回 true 表示保留该行,否则不保留
  return  row[property] === value
}
function setTableData(){
  setTimeout(()=>{
      tableDataOption.value= [ 
        { "prop": "bucket",
         "label": "桶名称", 
         "filter": true, 
          filterOptions: [
            { "text": "A1", "value": "A1" },
            { "text": "B1", "value": "002" }
          ] 
       }, 
        { 
          "prop": "projectID", 
          "label": "企业项目", 
          "filter": false, 
          filterOptions: [ ] 
        } 
      ]
    tableData.value= [
      {
        "bucket": "A1",
        "childInfo": [],
        "projectID": "default",
        "id": "001",
        "name": "bucket-1e1f",
      },
      {
        "bucket": "B1",
        "childInfo": [],
        "projectID": "default",
        "id": "bucket-272e",
        "name": "bucket-272e",
      },
    ]
  },1300)
}
function handleFilterChange(newFilters: Record<string, string[]>) {
  console.log(newFilters)
}

</script>

<style scoped>

</style>

filters 的介绍

filters 表格列中数据过滤的选项,数组格式。

数组中的元素需要有 text 和 value 属性。

filter-method 是一个方法,它用于决定某些数据是否显示,会传入三个参数:value, row 和 column。

该方法返回 true 表示保留该行,否则不保留。

使用 filter-method 进行过滤需要注意的点

filter-method 进行过滤是纯前端完成的。

如果是后端进行过滤,就不要使用 filter-method了,会导致表格出现无数据的情况。

该方法返回 true 表示保留该行,否则不保留。

filter-change="handleFilterChange"

当表格的过滤条件发生变化的时候会触发该事件 filter-change

比如: 使用 filter-method 方法进行过滤后,就会触发这个方法。

设置过滤后,重新设置表格中的数据也会自动展示过滤后的数据

表格最初有10条数据,我们使用过滤filter-change后,展示了1条数据;

就算接口返回来8条数据,表格也只会展示1条数据(会自动过滤,只展示符合条件的数据)

相关推荐
F_Quant1 小时前
高股息+破净+PEG三因子:年化20%的背后,是一个“敢于证伪自己”的捡烟蒂策略
前端
YIAN1 小时前
入门篇:LangGraph 入门实战:从零搭建最简单的 RAG 问答系统
javascript·langchain
不可能片场1 小时前
Electron 发布核验 别把没查到当成没发出去
前端·electron
开开心心就好1 小时前
文件被占用删不掉?解锁工具强制删除
java·运维·服务器·开发语言·前端·pdf·ocr
YIAN2 小时前
前置篇:手把手用 Milvus + LangChain 搭建小说向量知识库,《天龙八部》EPUB 一键入库
javascript·langchain
YIAN2 小时前
进阶篇:RAG 优化第一步:给你的问答系统加上智能路由,实现双分支分流
javascript·langchain
贾公子2 小时前
AI 内容检测 API 接入实战——异步任务、幂等键与轮询的正确写法
vue.js
inksci2 小时前
发布Ai生成的html markdown 推荐
前端·javascript·html