當(dāng)數(shù)據(jù)量過多時,使用分頁分解數(shù)據(jù)。
頁數(shù)較少時的效果
設(shè)置layout,表示需要顯示的內(nèi)容,用逗號分隔,布局元素會依次顯示。prev表示上一頁,next為下一頁,pager表示頁碼列表,除此以外還提供了jumper和total,size和特殊的布局符號->,->后的元素會靠右顯示,jumper表示跳頁元素,total表示總條目數(shù),size用于設(shè)置每頁顯示的頁碼數(shù)量。
<template>
<div class="block">
<span class="demonstration">頁數(shù)較少時的效果</span>
<el-pagination layout="prev, pager, next" :total="50"> </el-pagination>
</div>
<div class="block">
<span class="demonstration">大于 7 頁時的效果</span>
<el-pagination layout="prev, pager, next" :total="1000"> </el-pagination>
</div>
</template>
默認情況下,當(dāng)總頁數(shù)超過 7 頁時,Pagination 會折疊多余的頁碼按鈕。通過pager-count屬性可以設(shè)置最大頁碼按鈕數(shù)。
<template>
<el-pagination
:page-size="20"
:pager-count="11"
layout="prev, pager, next"
:total="1000"
>
</el-pagination>
</template>
設(shè)置background屬性可以為分頁按鈕添加背景色。
<template>
<el-pagination background layout="prev, pager, next" :total="1000">
</el-pagination>
</template>
在空間有限的情況下,可以使用簡單的小型分頁。
只需要一個small屬性,它接受一個Boolean,默認為false,設(shè)為true即可啟用。
<template>
<el-pagination small layout="prev, pager, next" :total="50"> </el-pagination>
</template>
根據(jù)場景需要,可以添加其他功能模塊。
此例是一個完整的用例,使用了size-change和current-change事件來處理頁碼大小和當(dāng)前頁變動時候觸發(fā)的事件。page-sizes接受一個整型數(shù)組,數(shù)組元素為展示的選擇每頁顯示個數(shù)的選項,[100, 200, 300, 400]表示四個選項,每頁顯示 100 個,200 個,300 個或者 400 個。
<template>
<div class="block">
<span class="demonstration">顯示總數(shù)</span>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
v-model:currentPage="currentPage1"
:page-size="100"
layout="total, prev, pager, next"
:total="1000"
>
</el-pagination>
</div>
<div class="block">
<span class="demonstration">調(diào)整每頁顯示條數(shù)</span>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
v-model:currentPage="currentPage2"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="sizes, prev, pager, next"
:total="1000"
>
</el-pagination>
</div>
<div class="block">
<span class="demonstration">直接前往</span>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
v-model:currentPage="currentPage3"
:page-size="100"
layout="prev, pager, next, jumper"
:total="1000"
>
</el-pagination>
</div>
<div class="block">
<span class="demonstration">完整功能</span>
<el-pagination
@size-change="handleSizeChange"
@current-change="handleCurrentChange"
:current-page="currentPage4"
:page-sizes="[100, 200, 300, 400]"
:page-size="100"
layout="total, sizes, prev, pager, next, jumper"
:total="400"
>
</el-pagination>
</div>
</template>
<script>
export default {
methods: {
handleSizeChange(val) {
console.log(`每頁 ${val} 條`)
},
handleCurrentChange(val) {
console.log(`當(dāng)前頁: ${val}`)
},
},
data() {
return {
currentPage1: 5,
currentPage2: 5,
currentPage3: 5,
currentPage4: 4,
}
},
}
</script>
當(dāng)只有一頁時,通過設(shè)置 ?hide-on-single-page
? 屬性來隱藏分頁。
<div>
<el-switch v-model="value"> </el-switch>
<el-pagination
:hide-on-single-page="value"
:total="5"
layout="prev, pager, next"
>
</el-pagination>
</div>
</template>
<script>
export default {
data() {
return {
value: false,
}
},
}
</script>
參數(shù) | 說明 | 類型 | 可選值 | 默認值 |
---|---|---|---|---|
small | 是否使用小型分頁樣式 | boolean | — | false |
background | 是否為分頁按鈕添加背景色 | boolean | — | false |
page-size | 每頁顯示條目個數(shù),支持 v-model 雙向綁定 | number | — | 10 |
default-page-size | 每頁顯示條目數(shù)的初始值; | number | - | - |
total | 總條目數(shù) | number | — | — |
page-count | 總頁數(shù),total 和 page-count 設(shè)置任意一個就可以達到顯示頁碼的功能;如果要支持 page-sizes 的更改,則需要使用 total 屬性 | Number | — | — |
pager-count | 頁碼按鈕的數(shù)量,當(dāng)總頁數(shù)超過該值時會折疊 | number | 大于等于 5 且小于等于 21 的奇數(shù) | 7 |
current-page | 當(dāng)前頁數(shù),支持 v-model 雙向綁定 | number | — | 1 |
default-current-page | 當(dāng)前頁數(shù)的初始值 | number | - | - |
layout | 組件布局,子組件名用逗號分隔 | String | sizes , prev , pager , next , jumper , -> , total , slot
|
'prev, pager, next, jumper, ->, total' |
page-sizes | 每頁顯示個數(shù)選擇器的選項設(shè)置 | number[] | — | [10, 20, 30, 40, 50, 100] |
popper-class | 每頁顯示個數(shù)選擇器的下拉框類名 | string | — | — |
prev-text | 替代圖標(biāo)顯示的上一頁文字 | string | — | — |
next-text | 替代圖標(biāo)顯示的下一頁文字 | string | — | — |
disabled | 是否禁用 | boolean | — | false |
hide-on-single-page | 只有一頁時是否隱藏 | boolean | — | - |
我們現(xiàn)在會檢查一些不合理的用法,如果發(fā)現(xiàn)分頁器未顯示,可以核對是否違反以下情形:
- total 和 page-count 必須傳一個,不然組件無法判斷總頁數(shù);優(yōu)先使用 page-count;
- 如果傳入了 current-page 必須監(jiān)聽 current-page 變更的事件(onUpdate:currentPage);否則分頁切換不起作用;
- 如果傳入了 page-size,且布局包含 page-size 選擇器(即 layout 包含 sizes),必須監(jiān)聽 page-size 變更的事件(onUpdate:pageSize),否則 page-size 切換不起作用;
事件名稱 | 說明 | 回調(diào)參數(shù) |
---|---|---|
size-change | pageSize 改變時會觸發(fā) | 每頁條數(shù) |
current-change | currentPage 改變時會觸發(fā) | 當(dāng)前頁 |
prev-click | 用戶點擊上一頁按鈕改變當(dāng)前頁后觸發(fā) | 當(dāng)前頁 |
next-click | 用戶點擊下一頁按鈕改變當(dāng)前頁后觸發(fā) | 當(dāng)前頁 |
以上事件不推薦使用;如果要監(jiān)聽 current-page 和 page-size 的改變,使用 v-model 雙向綁定是個更好的選擇。
name | 說明 |
---|---|
— | 自定義內(nèi)容,需要在 layout 中列出 slot
|
更多建議: