您的位置:首页 > 财经 > 金融 > 国内知名猎头公司排名_长沙网络公司app_湖南网站定制_沈阳seo收费

国内知名猎头公司排名_长沙网络公司app_湖南网站定制_沈阳seo收费

2025/4/19 7:19:39 来源:https://blog.csdn.net/liuguowei14/article/details/147208771  浏览:    关键词:国内知名猎头公司排名_长沙网络公司app_湖南网站定制_沈阳seo收费
国内知名猎头公司排名_长沙网络公司app_湖南网站定制_沈阳seo收费

前情提要

点进这个文章的小伙伴,应该都是为了解决一个需求,把原本的前端过滤改为后端过滤,但是将filter-method修改为后端取数据后,发现其触发了很多次。博主也是在修改表格过滤时用到了这个坑,本篇文章为大家解决一下,具体的演示示例在最下方,小伙伴可以直接复制查看

filter-method为什么会触发多次

其实很简单,在官方文档中便有提示,filter-method 方法本质是通过遍历行来实现的筛选,相当于会对每一行调用函数进行判断,所以当我们调整成取接口逻辑后,一次筛选就会触发多次
在这里插入图片描述

使用 filter-change 函数解决

知道了原因,我们就要选择正确的方法解决,在官方文档中我们找到 filter-change 函数,该函数是通过一次筛选整个表格实现过滤,只会触发1次,刚好满足我们的需求
在这里插入图片描述
接着,代码中原本的 filter-method 函数删除,加上 column-key 属性来绑定字段,因为本示例是单个条件筛选,我们把 filter-multiple 属性设置为 false ,最后在el-table 标签上添加新的函数 filter-change,即完成了筛选函数的替换

  <el-table :data="tableData" @filter-change="filterHandler"><el-table-column prop="type" column-key="type" label="类型" :filters="typeFilters" :filter-multiple="false"><template #default="scope"><el-tag v-if="scope.row.type===1" type="info">类型1</el-tag><el-tag v-else type="primary">类型2</el-tag></template></el-table-column></el-table>

完整演示示例

<script setup lang="ts">
import {ref} from 'vue'
const tableData = ref([])
const query = ref({type:''})
const typeFilters =  [{ value: 1, text: '类型1' },{ value: 2, text: '类型2' }]
const getTableData = () => {// 这里改成取后台接口的逻辑const source = [{type:1},{type:2},{type:1}]const data = []source.forEach(row=>{if(query.value.type && query.value.type!==row.type){return    }data.push(row)})tableData.value = data
}
getTableData()
const filterHandler = (column)=>{for(const key in column){query.value[key] = column[key][0]}getTableData()
}
</script><template><el-table :data="tableData" @filter-change="filterHandler"><el-table-column prop="type" column-key="type" label="类型" :filters="typeFilters" :filter-multiple="false"><template #default="scope"><el-tag v-if="scope.row.type===1" type="info">类型1</el-tag><el-tag v-else type="primary">类型2</el-tag></template></el-table-column></el-table>
</template>

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com