Pagination分页 - 图1

Pagination 分页

采用分页的形式分隔长列表,每次只加载一个页面。

何时使用

  • 当加载/渲染所有数据将花费很多时间时;
  • 可切换页码浏览数据。

代码演示

  • Pagination分页 - 图2
  • 1
  • 2
  • 3
  • 4
  • 5
  • Pagination分页 - 图3

基本

基础分页。

  1. <template>
  2. <a-pagination v-model="current" :total="50" show-less-items />
  3. </template>
  4. <script>
  5. export default {
  6. data() {
  7. return {
  8. current: 2,
  9. };
  10. },
  11. };
  12. </script>
  • Pagination分页 - 图4
  • 1
  • Pagination分页 - 图5•••

  • 4

  • 5
  • 6
  • 7
  • 8
  • Pagination分页 - 图6•••

  • 50

  • Pagination分页 - 图7

更多

更多分页。

  1. <template>
  2. <a-pagination :default-current="6" :total="500" />
  3. </template>

Pagination分页 - 图8

改变

改变每页显示条目数。

  1. <template>
  2. <div>
  3. <a-pagination
  4. show-size-changer
  5. :default-current="3"
  6. :total="500"
  7. @showSizeChange="onShowSizeChange"
  8. />
  9. <br />
  10. <a-pagination
  11. v-model="current"
  12. show-size-changer
  13. :page-size.sync="pageSize"
  14. :total="500"
  15. disabled
  16. @showSizeChange="onShowSizeChange"
  17. />
  18. </div>
  19. </template>
  20. <script>
  21. export default {
  22. data() {
  23. return {
  24. pageSize: 20,
  25. current: 4,
  26. };
  27. },
  28. watch: {
  29. pageSize(val) {
  30. console.log('pageSize', val);
  31. },
  32. current(val) {
  33. console.log('current', val);
  34. },
  35. },
  36. methods: {
  37. onShowSizeChange(current, pageSize) {
  38. console.log(current, pageSize);
  39. },
  40. },
  41. };
  42. </script>
  • Pagination分页 - 图9
  • 1
  • 2
  • 3
  • 4
  • 5
  • Pagination分页 - 图10
  • 10条/页

    Pagination分页 - 图11

自定义下拉选项

自定义下拉选项,例如添加全部选项

  1. <template>
  2. <a-pagination
  3. v-model="current"
  4. :page-size-options="pageSizeOptions"
  5. :total="total"
  6. show-size-changer
  7. :page-size="pageSize"
  8. @showSizeChange="onShowSizeChange"
  9. >
  10. <template slot="buildOptionText" slot-scope="props">
  11. <span v-if="props.value !== '50'">{{ props.value }}条/页</span>
  12. <span v-if="props.value === '50'">全部</span>
  13. </template>
  14. </a-pagination>
  15. </template>
  16. <script>
  17. export default {
  18. data() {
  19. return {
  20. pageSizeOptions: ['10', '20', '30', '40', '50'],
  21. current: 1,
  22. pageSize: 10,
  23. total: 50,
  24. };
  25. },
  26. methods: {
  27. onShowSizeChange(current, pageSize) {
  28. this.pageSize = pageSize;
  29. },
  30. },
  31. };
  32. </script>

Pagination分页 - 图12

跳转

快速跳转到某一页。

  1. <template>
  2. <div>
  3. <a-pagination show-quick-jumper :default-current="2" :total="500" @change="onChange" />
  4. <br />
  5. <a-pagination
  6. show-quick-jumper
  7. :default-current="2"
  8. :total="500"
  9. disabled
  10. show-less-items
  11. @change="onChange"
  12. />
  13. </div>
  14. </template>
  15. <script>
  16. export default {
  17. methods: {
  18. onChange(pageNumber) {
  19. console.log('Page: ', pageNumber);
  20. },
  21. },
  22. };
  23. </script>

Pagination分页 - 图13

迷你

迷你版本。

  1. <template>
  2. <div id="components-pagination-demo-mini">
  3. <a-pagination size="small" :total="50" />
  4. <a-pagination size="small" :total="50" show-size-changer show-quick-jumper />
  5. <a-pagination size="small" :total="50" :show-total="total => `Total ${total} items`" />
  6. </div>
  7. </template>
  8. <style scoped>
  9. #components-pagination-demo-mini .ant-pagination:not(:last-child) {
  10. margin-bottom: 24px;
  11. }
  12. </style>
  • Pagination分页 - 图14
  • /5
  • Pagination分页 - 图15

简洁

简单的翻页。

  1. <template>
  2. <a-pagination simple :default-current="2" :total="50" />
  3. </template>
  • Pagination分页 - 图16
  • 1
  • 2
  • 3
  • 4
  • 5
  • Pagination分页 - 图17

受控

受控制的页码。

  1. <template>
  2. <a-pagination :current="current" :total="50" @change="onChange" />
  3. </template>
  4. <script>
  5. export default {
  6. data() {
  7. return {
  8. current: 3,
  9. };
  10. },
  11. methods: {
  12. onChange(current) {
  13. this.current = current;
  14. },
  15. },
  16. };
  17. </script>

Pagination分页 - 图18

总数

通过设置 showTotal 展示总共有多少数据。

  1. <template>
  2. <div>
  3. <a-pagination
  4. :total="85"
  5. :show-total="total => `Total ${total} items`"
  6. :page-size="20"
  7. :default-current="1"
  8. />
  9. <br />
  10. <a-pagination
  11. :total="85"
  12. :show-total="(total, range) => `${range[0]}-${range[1]} of ${total} items`"
  13. :page-size="20"
  14. :default-current="1"
  15. />
  16. </div>
  17. </template>
  • Previous
  • 1
  • 2
  • 3
  • 4
  • 5
  • Pagination分页 - 图19•••

  • 50

  • Next

上一步和下一步

修改上一步和下一步为文字链接。

  1. <template>
  2. <a-pagination :total="500" :item-render="itemRender" />
  3. </template>
  4. <script>
  5. export default {
  6. methods: {
  7. itemRender(current, type, originalElement) {
  8. if (type === 'prev') {
  9. return <a>Previous</a>;
  10. } else if (type === 'next') {
  11. return <a>Next</a>;
  12. }
  13. return originalElement;
  14. },
  15. },
  16. };
  17. </script>

API

  1. <a-pagination @change="onChange" :total="50" />
参数说明类型默认值版本
current(v-model)当前页数number-
defaultCurrent默认的当前页数number1
defaultPageSize默认的每页条数number10
disabled禁用分页boolean-1.5.0
hideOnSinglePage只有一页时是否隐藏分页器booleanfalse
itemRender用于自定义页码的结构,可用于优化 SEO(page, type: ‘page’ | ‘prev’ | ‘next’, originalElement) => vNode-
pageSize(.sync)每页条数number-
pageSizeOptions指定每页可以显示多少条string[][‘10’, ‘20’, ‘30’, ‘40’]
showLessItemsshow less page itemsbooleanfalse1.5.0
showQuickJumper是否可以快速跳转至某页booleanfalse
showSizeChanger是否可以改变 pageSizebooleanfalse
showTotal用于显示数据总量和当前数据顺序Function(total, range)-
simple当添加该属性时,显示为简单分页boolean-
size当为「small」时,是小尺寸分页string“”
total数据总数number0

事件

事件名称说明回调参数
change页码改变的回调,参数是改变后的页码及每页条数Function(page, pageSize)
showSizeChangepageSize 变化的回调Function(current, size)