ElementPlus Pagination 分頁

2021-09-26 11:13 更新

Pagination 分頁

當(dāng)數(shù)據(jù)量過多時,使用分頁分解數(shù)據(jù)。

基礎(chǔ)用法

頁數(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>

設(shè)置最大頁碼按鈕數(shù)

默認情況下,當(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)只有一頁時隱藏分頁

當(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>

Attributes

參數(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 切換不起作用;

Events

事件名稱 說明 回調(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 雙向綁定是個更好的選擇。

Slot

name 說明
自定義內(nèi)容,需要在 layout 中列出 slot


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號