Ant Design Vue table組件如何自定義分頁器
Ant Design Vue table組件自定義分頁器

由 Ant Design of Vue 提供的Table表格組件自身是帶有pagination分頁功能的,用于獲取到后臺(tái)返回的全部數(shù)據(jù)時(shí)很適用。但是項(xiàng)目需求需要用到分頁查詢以及條數(shù)查詢時(shí),就需要我們對(duì)代碼做出改變
1.設(shè)置pagination屬性為false,取消table組件自帶的分頁效果
<a-table :pagination="false" > </a-table>
2.使用分頁組件,選用合適的屬性
<a-pagination
v-model="current"
show-size-changer
:page-size.sync="pageSize"
:total="total"
:show-total="total => `總數(shù) ${total} 條`"
/>
data () {
return {
total:0,
pageSize: 10,
current: 1
},
watch: {
// 監(jiān)聽條數(shù)的改變
pageSize(val) {
console.log('pageSize', val);
this.pageSize = val
this.current = 1
this.getRtSignByPage()
},
// 監(jiān)聽頁數(shù)的改變
current(val) {
console.log('current', val);
this.current = val
this.getRtSignByPage()
},
},
mounted () {
this.getRtSignByPage()
},
methods: {
// 按條件分頁查詢
async getRtSignByPage () {
let { data } = await getMenuPages({
current:this.current,
size:this.pageSize
})
this.data = data.data.records
this.total = data.data.total
}
}
使用Ant Design Vue的Table組件,解決點(diǎn)擊任意內(nèi)容詳情,點(diǎn)擊返回分頁器頁數(shù)默認(rèn)回到第一頁
問題描述
使用 Ant Design Vue的 Table 組件時(shí),點(diǎn)擊底部分頁器切換頁面,表格信息會(huì)重新加載,但是頁面路由還是相同的,這就導(dǎo)致切換頁面之后,點(diǎn)擊某一元素的詳情頁面之后,點(diǎn)擊返回默認(rèn)回到表格的第一頁,就比如你點(diǎn)擊 頁數(shù)為 3 的一個(gè)元素切換到它的詳情頁,點(diǎn)擊返回,表格又回到了頁數(shù) 1,這樣的操作體驗(yàn)十分不友好

解決方法
巧妙運(yùn)用 pagination 的 defaultCurrent(默認(rèn)頁數(shù)屬性),配合使用 onChange方法, 使用 sessionStorage.setItem() 和 sessionStorage.getItem() 來存儲(chǔ)和取出當(dāng)前頁數(shù) ,
表格代碼
這里的代碼只是測(cè)試用例,用于演示
<a-table
:data-source="data"
:columns="columns"
:pagination="pagination"
>
<template slot="address" >
<div >
<span>
<a @click="ClickDetail">詳情</a>
</span>
</div>
</template>
</a-table>自定義的 pagination
data(){
return{
data,
columns,
currentPage:Number(sessionStorage.getItem('currentPage')) || 1,,
pagination:
{
pageSize: 5, // 默認(rèn)每頁顯示數(shù)量
defaultCurrent: Number(sessionStorage.getItem('currentPage')) || 1, // 默認(rèn)當(dāng)前頁數(shù)
showSizeChanger: true, // 顯示可改變每頁數(shù)量
pageSizeOptions: ['5', '10', '20', '50'], // 每頁數(shù)量選項(xiàng)
showTotal: total => `Total ${total} items`, // 顯示總數(shù)
showSizeChange: (current, pageSize) => this.pageSize = pageSize, // 改變每頁數(shù)量時(shí)更新顯示
// 改變頁數(shù)時(shí)時(shí)觸發(fā)函數(shù)
onChange: (current) => {
this.currentPage = current;
}
}
}
},methods中的函數(shù)
點(diǎn)擊進(jìn)入詳情函數(shù)
// 點(diǎn)擊詳情事件
ClickDetail(){
sessionStorage.setItem('currentPage',this.currentPage)
// 下面是自己的具體的頁面邏輯,即跳轉(zhuǎn)路由的操作
this.$route.xxxxxx
}可以看到當(dāng)點(diǎn)擊詳情后,就把當(dāng)前的 頁面值 currentPage 存入了緩存中,可以仔細(xì)看上面自定義 pagination 的一些配置,它從緩存中取出 先前的頁面值 currentPage ,并把它當(dāng)做默認(rèn)頁面加載 ,那么現(xiàn)在可以看到這個(gè)問題就迎刃而解了
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue項(xiàng)目優(yōu)雅實(shí)現(xiàn)自動(dòng)引入組件的方法詳解
在我們寫vue項(xiàng)目的時(shí)候,都會(huì)引入一些組件庫,有時(shí)候有可能還不止一個(gè)組件庫,那么如何優(yōu)雅的實(shí)現(xiàn)自動(dòng)引入組件呢,下面小編就來和大家詳細(xì)講講吧2023-09-09
Vue在項(xiàng)目中如何引入本地Json數(shù)據(jù)
這篇文章主要介紹了Vue在項(xiàng)目中如何引入本地Json數(shù)據(jù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-11-11
vue項(xiàng)目啟動(dòng)出現(xiàn)cannot GET /服務(wù)錯(cuò)誤的解決方法
這篇文章主要介紹了vue項(xiàng)目啟動(dòng)出現(xiàn)cannot GET /服務(wù)錯(cuò)誤的解決方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-04-04
Vue注冊(cè)模塊與登錄狀態(tài)的持久化實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Vue注冊(cè)模塊與登錄狀態(tài)的持久化實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-08-08
Vue+Element-UI實(shí)現(xiàn)上傳圖片并壓縮
這篇文章主要為大家詳細(xì)介紹了Vue+Element-UI實(shí)現(xiàn)上傳圖片并壓縮功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11
解決Vue 移動(dòng)端點(diǎn)擊出現(xiàn)300毫秒延遲的問題
這篇文章主要介紹了解決Vue 移動(dòng)端點(diǎn)擊出現(xiàn)300毫秒延遲的問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2020-07-07

