ant-design-vue Table pagination分頁(yè)實(shí)現(xiàn)全過(guò)程
ant-design-vue Table pagination分頁(yè)實(shí)現(xiàn)
ant-design-vue Table自帶分頁(yè)的問(wèn)題
表格單獨(dú)使用時(shí),自帶簡(jiǎn)單分頁(yè),只包含 上一頁(yè), 頁(yè)面碼, 下一頁(yè),例如:
我們的實(shí)現(xiàn)
但如果想要與后端配合著寫(xiě),則需要傳入pagination參數(shù)來(lái)自定義,
看代碼:
分頁(yè)變動(dòng)出發(fā)handleTableChange事件:
<a-table :columns="columns" :data-source="wmsWarehouseList" :pagination="pagination" @change="handleTableChange" :row-selection="{ selectedRowKeys: selectedRowKeys, onChange: onSelectChange }" >
data () { return { // 分頁(yè)參數(shù) pagination: { // size: 'large', current: 1, pageSize: 10, total: 0, pageSizeOptions: ['10', '20', '30'], // 可選的頁(yè)面顯示條數(shù) showTotal: (total, range) => { return range[0] + '-' + range[1] + ' 共' + total + '條' }, // 展示每頁(yè)第幾條至第幾條和總數(shù) hideOnSinglePage: false, // 只有一頁(yè)時(shí)是否隱藏分頁(yè)器 showQuickJumper: true, // 是否可以快速跳轉(zhuǎn)至某頁(yè) showSizeChanger: true // 是否可以改變pageSize }, } } methods: { handleTableChange (e) { console.log(e) this.pagination = e this.loading = true const pageNum = e.current - 1 const pageSize = e.pageSize const query = { ...this.queryParams, } const pageReq = { page: pageNum, size: pageSize } listWmsWarehouse(query, pageReq).then((response) => { }) },
onChange與onShowSizeChange 比較
onChange
:頁(yè)碼改變的回調(diào),參數(shù)是改變后的頁(yè)碼及每頁(yè)條數(shù)onShowSizeChange
:只有pageSize 變化才會(huì)回調(diào)
Ant Design Vue 如何分頁(yè)(后臺(tái)傳入)
我們?cè)谑褂梅猪?yè)使,直接用表格()的自定義:pagination屬性最方便;如下圖所示:
? ? ? ?<a-table ? ? ? ? ?ref="table" ? ? ? ? ? style="margin-bottom: 24px" ? ? ? ? ? row-key="key" ? ? ? ? ? :columns="goodsColumns" ? ? ? ? ? :data-source="loadGoodsData" ? ? ? ? ? :pagination="paginationOpt" ? ? ? ? ? bordered> ? ? ? ? </a-table>
基于VUE,我們必須在data中定義paginationOpt對(duì)象,代碼片段如下:
// 分頁(yè) ? ? ? paginationOpt: { ? ? ? ? defaultCurrent: 1, // 默認(rèn)當(dāng)前頁(yè)數(shù) ? ? ? ? defaultPageSize: 5, // 默認(rèn)當(dāng)前頁(yè)顯示數(shù)據(jù)的大小 ? ? ? ? total: 0, // 總數(shù),必須先有 ? ? ? ? showSizeChanger: true, ? ? ? ? showQuickJumper: true, ? ? ? ? pageSizeOptions: ["5", "10", "15", "20"], ? ? ? ? showTotal: (total) => `共 ${total} 條`, // 顯示總數(shù) ? ? ? ? onShowSizeChange: (current, pageSize) => { ? ? ? ? ? this.paginationOpt.defaultCurrent = 1; ? ? ? ? ? this.paginationOpt.defaultPageSize = pageSize; ? ? ? ? ? this.searchCameraFrom(); //顯示列表的接口名稱(chēng) ? ? ? ? }, ? ? ? ? // 改變每頁(yè)數(shù)量時(shí)更新顯示 ? ? ? ? onChange: (current, size) => { ? ? ? ? ? this.paginationOpt.defaultCurrent = current; ? ? ? ? ? this.paginationOpt.defaultPageSize = size; ? ? ? ? ? this.searchCameraFrom(); ? ? ? ? }, ? ? ? },
調(diào)用接口時(shí),?一定要更新total值!?。。?!?并在發(fā)送請(qǐng)求前結(jié)構(gòu)當(dāng)前頁(yè)和pagesize的值,否則一直時(shí)默認(rèn)值1和5(我這邊初始時(shí)1和5,可自己更改)
? ? // 查詢(xún) ? ? searchCameraFrom() { ? ? ? console.log(this.cameraParams); ? ? ? const { defaultCurrent, defaultPageSize } = this.paginationOpt; ? ? ? ? this.$api.Camera.getCameraList({ ? ? ? ? currPage: defaultCurrent, ? ? ? ? pageSize: defaultPageSize, ? ? ? ? info: this.cameraParams, ? ? ? }) ? ? ? ? .then((res) => { ? ? ? ? ? if (res.code != "200") { ? ? ? ? ? ? return Promise.reject; ? ? ? ? ? } ? ? ? ? ? console.log(res); ? ? ? ? ? this.cameraList = res.data; ? ? ? ? ? this.paginationOpt.total = res.total; ? ? ? ? }) ? ? ? ? .catch(() => {}); ? ? },
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue登錄功能實(shí)現(xiàn)全套詳解(含封裝axios)
登錄功能對(duì)于前端剛?cè)腴T(mén)不久的同學(xué)來(lái)說(shuō)較為困難,下面這篇文章主要給大家介紹了關(guān)于Vue登錄功能實(shí)現(xiàn)(含封裝axios)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-12-12基于Vue2.0和Typescript實(shí)現(xiàn)多主題切換的示例
本文主要介紹了基于Vue2.0和Typescript實(shí)現(xiàn)多主題切換的示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04vue引入js數(shù)字小鍵盤(pán)的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue引入js數(shù)字小鍵盤(pán)的實(shí)現(xiàn)代碼,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下2018-05-05vue中el-date-picker限制選擇7天內(nèi)&禁止內(nèi)框選擇
項(xiàng)目中需要選擇時(shí)間范圍,并且只能選擇當(dāng)前日期之后的七天,本文就來(lái)介紹了vue中el-date-picker限制選擇7天內(nèi)&禁止內(nèi)框選擇,具有一定的參考價(jià)值,感興趣的可以了解一下2023-12-12