日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 前端技术 > vue >内容正文

vue

antd table排序 vue_ant-design-vue中的table取消默认不排序的状态

發(fā)布時間:2024/9/3 vue 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 antd table排序 vue_ant-design-vue中的table取消默认不排序的状态 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

ant-design-vue中的table組件具有排序的屬性,該排序?qū)傩杂腥N狀態(tài):升序、降序和不排序。在項(xiàng)目開發(fā)中,有時產(chǎn)品經(jīng)理會要求排序時只能有升序或降序兩種狀態(tài),而table組件中卻沒有相應(yīng)的API配置,那么我們?nèi)绾稳∠慌判虻臓顟B(tài)呢?

一、排序相關(guān)API

table組件中關(guān)于排序的API有4個:sorter、sortOrder、sortDirections以及change事件。

sorter:排序函數(shù),本地排序使用一個函數(shù),需要服務(wù)端排序可設(shè)為 true。

sortOrder: 排序的受控屬性,外界可用此控制列的排序,可設(shè)置為 'ascend'、'descend'、'false'。

sortDirections:sortDirections: ['ascend' | 'descend']改變每列可用的排序方式,切換排序時按數(shù)組內(nèi)容依次切換,設(shè)置在table props上時對所有列生效。使用defaultSortOrder屬性,設(shè)置列的默認(rèn)排序順序。

change:分頁、排序、篩選變化時觸發(fā)。

這三個API都需要設(shè)置在Column中,Column是列描述數(shù)據(jù)對象,是 columns 中的一項(xiàng),Column 使用相同的 API。例如:

columns: Array = [

{

title: '平均處理時間/ms',

dataIndex: 'avgRt',

width: '10%',

sorter: true,

sortOrder: false,

sortDirections: ['descend', 'ascend'],

scopedSlots: { customRender: 'avgRt' }

}, {

title: '最大處理時間/ms',

dataIndex: 'maxRt',

width: '10%',

sorter: true,

sortOrder: false,

sortDirections: ['descend', 'ascend'],

scopedSlots: { customRender: 'maxRt' }

}

]

上面的代碼說明在table中有兩列數(shù)據(jù)具有排序功能,排序功能由服務(wù)端提供,排序方式按照降序、升序的順序依次切換。

除了上述3個屬性之外,我們還需要在排序時觸發(fā)chang事件。

:columns="columns"

:rowKey="record => record.id"

:dataSource="dataList"

@change="sorterChange"

>

sorterChange(pagination, filters, sorter)有3個回調(diào)參數(shù),其中跟排序相關(guān)的是sorter參數(shù),它是一個對象,包含field、order屬性,field描述當(dāng)前排序的列,order描述當(dāng)前排序的順序。當(dāng)處于不排序狀態(tài)時,sorter對象為空。

因此,我們可以通過判斷當(dāng)前sorter對象是否為空來判斷當(dāng)前的狀態(tài)是否為不排序狀態(tài),并重新對其賦值并渲染,從而達(dá)到“消除”該狀態(tài)的目的。

二、具體實(shí)現(xiàn)

根據(jù)上述的設(shè)置,目前的排序狀態(tài)切換為:降序->升序->空->降序->升序->空...,為了將該順序調(diào)整為:降序->升序->降序->升序...,首先,我們需要定義一個對象sortObj對象用于存儲sorter對象的值。當(dāng)sorter.order === 'descend'時,將此時的sorter賦值給sortObj,當(dāng)判斷出當(dāng)前sorter.order為空時,即狀態(tài)為不排序,將上一步存儲降序狀態(tài)的sortObj賦值給sorter,并重新渲染該列的排序樣式,那么就能將不排序狀態(tài)修改為降序狀態(tài)。

sorterChange (pagination, filters, sorter) {

let sortObj = {};

if (sorter.order === 'descend') {

sortObj = sorter;

}

if (!sorter.order) {

sorter = sortObj;

}

switch (sorter.field) {

case 'avgRt':

this.sortTrans(sorter, 0);

break;

case 'maxRt':

this.sortTrans(sorter, 1);

break;

}

}

渲染函數(shù)為sortTrans,它接收兩個參數(shù):sorter和index,index為當(dāng)前列數(shù)據(jù)在columns數(shù)組中的位置。通過重新渲染當(dāng)前列,并將其它排序列的sortOrder置為false,從而使每次切換排序時,都只有當(dāng)前列處于排序狀態(tài)。

sortTrans (sorter, index) {

for (let i = 0; i < 2; i++) {

this.columns[i].sortOrder = false;

}

this.columns[index].sortOrder = sorter.order;

}

三、總結(jié)

以上的思路可以總結(jié)為兩步:

1、將值為空對象的sorter重新賦值為目標(biāo)排序狀態(tài)的sorter,該目標(biāo)狀態(tài)的sorter需要先存儲下來;

2、重新賦值后,再重新渲染目標(biāo)排序列的樣式。

總結(jié)

以上是生活随笔為你收集整理的antd table排序 vue_ant-design-vue中的table取消默认不排序的状态的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。