分页
v-model:page 控制分页器,data 是已经加载的当前页记录。CRUD 不会自动对完整数组分页,也不会自动调用业务接口。
页码和条数
currentPage 是从 1 开始的页码,total 是总记录数,pageSize 是每页条数。分页器默认每页 10 条;示例可通过输入修改分页参数。
设置最大页码按钮数
pagerCount 默认 7,页数较多时折叠中间页码,不影响真实总页数。
无背景色的分页
background 默认 true,设置 false 可以取消分页按钮背景。
附加功能
layout 用逗号分隔,桌面默认 total, sizes, prev, pager, next, jumper。显式设置可以选择需要的功能。
综合用法
on-load(page) 会在初次创建、用户改变页码和每页条数时触发。本例在内存中按页截取数据,翻页后检查实际行 ID 和总记录数。
page.total = 0 或 option.page = false 会隐藏分页区域。page.single = true 在总共只有一页时隐藏分页器,配置名不是 simplePage。修改每页条数会先将页码设为 1,再触发 on-load。
current-change 和 size-change 适合记录操作或处理附加状态;如果已经在 on-load 请求列表,就不要再在这两个事件中请求一次。
分页与搜索一起使用
输入姓名关键字或选择状态后搜索,结果会从第 1 页开始;翻页沿用已提交条件。状态「待处理」保存数字 0,也会参与过滤。清空恢复完整列表,刷新保留当前已提交的条件,下方显示每次加载所用参数。
搜索输入对象与已经提交的查询条件应分别保存。这样输入但尚未提交的新值,不会意外改变翻页查询:
const searchChange = async (params, done) => {
query.value = { ...params };
page.value.currentPage = 1;
try {
await loadList();
} finally {
done();
}
};
const searchReset = async () => {
query.value = {};
page.value.currentPage = 1;
await loadList();
};search-change、search-reset 和 refresh-change 不会自动调用 on-load。页码在代码中改变时也应主动加载;table-loading 由业务请求管理,请在 finally 中恢复。多个请求可能重叠时,取消旧请求或检查请求序号,避免旧页覆盖新页。
自定义分页
page 插槽可以在内置分页区域添加内容。总记录数赋给 total,不是把总页数赋给它。需要完全替换分页器时,可关闭 option.page 并在组件外使用自己的分页组件。
