vue實(shí)現(xiàn)iview表格添加篩選功能的示例代碼
給table的某列添加篩選功能
在table中通過(guò)給columns數(shù)據(jù)的項(xiàng),設(shè)置 filters,可進(jìn)行篩選,filters 接收一個(gè)數(shù)組。
然后再指定一個(gè)篩選函數(shù) filterMethod 才可以進(jìn)行篩選,filterMethod 傳入兩個(gè)參數(shù)value和 row。
如果指定 filterMultiple: false,則只能單選,默認(rèn)為多選。
注意,篩選并不會(huì)影響到表格的源數(shù)據(jù) data。
基礎(chǔ)示例
<template>
<Table border :columns="columns" :data="data"></Table>
</template>
<script>
export default {
data () {
return {
columns: [
{
title: '名稱',
key: 'name'
},
{
title: '年齡',
key: 'age',
filters: [
{
label: '大于25',
value: 1
},
{
label: '小于25',
value: 2
}
],
filterMultiple: false,
filterMethod (value, row) {
if (value === 1) {
return row.age > 25;
} else if (value === 2) {
return row.age < 25;
}
}
},
{
title: '地址',
key: 'address',
filters: [
{
label: '北京',
value: '北京'
},
{
label: '上海',
value: '上海'
},
{
label: '四川',
value: '四川'
}
],
filterMethod (value, row) {
return row.address.indexOf(value) > -1;
}
}
],
data: [
{
name: '張三',
age: 10,
address: '四川',
},
{
name: '李四',
age: 25,
address: '上海',
},
{
name: '王五',
age: 35,
address: '北京',
},
{
name: '秀豆',
age: 27,
address: '四川',
}
],
}
}
}
</script>
特殊情況改造
filters中的數(shù)據(jù)需要?jiǎng)討B(tài)獲取
當(dāng)filters中的內(nèi)容需要從后端接口中獲取,如果我們直接把從接口中獲取到的數(shù)據(jù)賦值給filters的話,篩選不會(huì)生效。錯(cuò)誤示例
{
title: '年齡',
key: 'age',
filters: this.filters, // 從接口返回的數(shù)據(jù)
filterMultiple: false,
filterMethod (value, row) {
// ...
}
},正確示例
// 偽代碼 const res = await this.$axois(...); // 獲取對(duì)應(yīng)接口數(shù)據(jù) this.filters = res; this.columns[1].filters = this.filters; // 當(dāng)前把需要的數(shù)據(jù)賦值給columns
filters中的數(shù)據(jù)過(guò)多,導(dǎo)致超出了屏幕內(nèi)容以外的區(qū)域

這種情況怎么辦?可以會(huì)想沒(méi)法用了,得自己重新寫個(gè)了,但轉(zhuǎn)念一想,這是css樣式問(wèn)題,我們可以檢查對(duì)應(yīng)元素,通過(guò)javascript拿到指定元素,然后去修改元素的相關(guān)樣式啊。解決方法
// 接上面的示例,當(dāng)filters中的數(shù)據(jù)從接口中獲取到后,我們`f12`拿到指定元素,修改它的高度等屬性即可。
this.$nextTick(() => {
if (this.filters.length) {
let listDom = document.querySelector(".main-ui-table-filter-list-item");
listDom.style.height = "400px";
listDom.style.overflow = "auto";
}
})修改后的樣式就沒(méi)撒問(wèn)題了

到此這篇關(guān)于vue實(shí)現(xiàn)iview表格添加篩選功能的示例代碼的文章就介紹到這了,更多相關(guān)vue iview表格添加篩選內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
關(guān)于vue中標(biāo)簽的屬性綁定值渲染問(wèn)題
這篇文章主要介紹了關(guān)于vue中標(biāo)簽的屬性綁定值渲染問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06
Vue實(shí)現(xiàn)移動(dòng)端左右滑動(dòng)效果的方法
最近得到一個(gè)新需求,需要在Vue項(xiàng)目的移動(dòng)端頁(yè)面上加上左右滑動(dòng)效果,經(jīng)過(guò)一番折騰,最終決定四月vue-touch。下面小編把實(shí)現(xiàn)代碼分享給大家,感興趣的朋友一起看看吧2018-11-11
詳解Vue實(shí)戰(zhàn)指南之依賴注入(provide/inject)
這篇文章主要介紹了詳解Vue實(shí)戰(zhàn)指南之依賴注入(provide/inject),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-11-11
vue動(dòng)態(tài)合并單元格并添加小計(jì)合計(jì)功能示例
這篇文章主要給大家介紹了關(guān)于vue動(dòng)態(tài)合并單元格并添加小計(jì)合計(jì)功能的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-11-11
Vue中使用a標(biāo)簽下載靜態(tài)資源文件(如excel、pdf等)純前端操作方法
這篇文章主要介紹了Vue中使用a標(biāo)簽下載靜態(tài)資源文件(如excel、pdf等)純前端操作方法的相關(guān)資料,需要的朋友可以參考下2025-02-02
vue 項(xiàng)目@change多個(gè)參數(shù)傳值多個(gè)事件的操作
這篇文章主要介紹了vue 項(xiàng)目@change多個(gè)參數(shù)傳值多個(gè)事件的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-01-01
解決vue ui報(bào)錯(cuò)Couldn‘t parse bundle asset“C:
這篇文章主要介紹了解決vue ui報(bào)錯(cuò)Couldn‘t parse bundle asset“C:\Users\Administrator\vue_project1\dist\js\about.js“. Analyzer問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04

