Skip to content

FaPagination 分页

功能完整的分页组件,支持总条数显示、每页条数选择、页码跳转和自定义布局。

使用场景

  • 数据列表分页
  • 表格分页
  • 搜索结果分页
  • 文章列表分页
  • 评论列表分页

Props

属性类型默认值说明
totalnumber必需数据总条数
sizesnumber[][10, 20, 30, 40, 50, 100]每页条数选项
layoutstring'total, sizes, ->, pager, jumper'布局配置
textTemplatesobject见下方文本模板配置,用于国际化
pagenumber必需当前页码(支持 v-model)
sizenumber必需每页条数(支持 v-model)

Events

事件名参数说明
pageChangepage: number页码变化时触发
sizeChangesize: number每页条数变化时触发

注意事项

布局配置说明

layout 属性控制分页组件的布局和元素顺序,支持以下元素:

元素说明
total显示总条数
sizes每页条数选择器
pager页码按钮组
jumper页码跳转输入框
->弹性占位符(将后续元素推到右侧)

布局示例

vue
<!-- 左侧总条数,中间页码,右侧跳转 -->
<FaPagination layout="total, ->, pager, jumper" />

<!-- 仅显示页码 -->
<FaPagination layout="pager" />

<!-- 总条数 + 每页条数 + 分页器 -->
<FaPagination layout="total, sizes, pager" />

textTemplates 配置

textTemplates 属性用于自定义分页组件中的文本,支持国际化场景。

属性类型默认值说明
total(total: number) => string(total) => \共 ${total} 条``总条数文本格式化函数
sizes(size: number) => string(size) => \${size} 条/页``每页条数文本格式化函数
jumper{ before: string, after: string }{ before: '前往', after: '页' }页码跳转前后文本

国际化示例

vue
<script setup>
import { useI18n } from 'vue-i18n'

const { t } = useI18n()
</script>

<template>
  <FaPagination
    :text-templates="{
      total: (total) => t('pagination.total', { total }),
      sizes: (size) => t('pagination.sizes', { size }),
      jumper: {
        before: t('pagination.jumperBefore'),
        after: t('pagination.jumperAfter'),
      },
    }"
  />
</template>
  1. 必需属性totalpagesize 为必需属性
  2. 双向绑定pagesize 支持 v-model 双向绑定
  3. 页码范围:跳转页码会自动限制在有效范围内
  4. 自动聚焦:跳转输入框获得焦点时会自动选中文本
  5. 回车跳转:在跳转输入框中按回车键可触发跳转