Layui table 无独立分页实例,分页逻辑内嵌于 table 模块;当前页码、总条数、limit 需通过 done 回调参数或 getOptions().page 获取;跳页须用 table.reload() 并传 page 配置。

layui table 里没有独立的「分页组件实例对象」
这是最容易误解的一点:table.render() 渲染的是表格,不是分页器。Layui 的分页逻辑是内嵌在 table 模块里的,它不对外暴露单独的 laypage 实例——除非你手动额外调用 laypage.render() 单独渲染一个分页条。
所以当你想“获取分页实例”时,实际要的通常是以下三类操作之一:
- 获取当前表格的分页状态(当前页、每页条数、总条数)→ 查
table.config或done回调参数 - 触发跳页或重载 → 调用
table.reload()并传入page配置 - 手动控制外部 laypage 组件 → 必须自己用
laypage.render()初始化,并维护curr和count
怎么拿到当前页码、总条数、limit 值
这些信息不在某个“实例对象”里,而是通过以下两种方式获得:
-
done回调函数的三个参数:res(响应数据)、curr(当前页码)、count(服务端返回的总条数) - 查表格配置:
layui.table.getOptions('your-table-id').page.curr、.limit、.count(注意:这个count是你 reload 时传进去的,不是自动同步服务端的)
示例:
<pre class="brush:php;toolbar:false;">table.render({
elem: '#demo',
url: '/api/list',
page: true,
done: function(res, curr, count) {
console.log('当前页:', curr); // 1, 2, 3...
console.log('总条数:', count); // 来自 res.count 字段
console.log('当前 limit:', this.limit); // this 指向当前 table 实例配置
}
});
reload 时如何指定跳转到某一页
不能直接调 laypage.jump(),必须走 <code>table.reload(),并显式传入 page 配置项:
-
page: { curr: 5 }→ 跳到第 5 页(会自动请求第 5 页数据) -
page: { curr: 1, limit: 20 }→ 同时改页码和每页条数 - 不传
page,只传其他参数(如where),则保持当前页码不变
注意:table.reload() 不会保留之前的手动选中状态(比如 checkbox),需要你自己缓存 ids 数组并在 done 中回填。
如果硬要操作 laypage 实例,得自己 render
当你的场景需要完全自定义分页 UI(比如带搜索跳转、页码输入框等),就别依赖 table 内置分页,而是:
- 关闭
table的分页:page: false - 用
laypage.render()单独初始化一个分页器 - 在
jump回调里手动调table.reload(),把obj.curr作为page.curr传进去
关键点:两个组件之间无自动绑定,所有联动都靠你手动传参。漏掉 curr 或没在 where 里透传分页参数,后端就收不到 page 和 limit。
最常被忽略的是:很多人以为 table.config 里的 page 属性是实时更新的,其实它只反映初始化时的配置;真正运行时的页码状态,只存在于 done 回调或 reload 的参数中。


















