layui table 的 page 配置项通过 layout 数组控制分页栏显隐与顺序,需配合 limit、limits(非空则显示下拉)、response.count(服务端分页时必配)使用,缺一不可。
layui table 的 page 配置项能控制分页栏显示哪些部分
layui 的表格分页栏默认显示「上一页 / 下一页 / 跳转 / 总数」,但实际项目里常要隐藏跳转框、只留按钮,或把总数挪到左边。这些不是靠 css 隐藏实现的,而是由 page 对象里的布尔字段决定的。
关键点在于:page 是个对象,不是布尔值;它必须和 limits、limit 一起配对使用,否则分页逻辑会失效(比如点击页码没反应)。
-
page: { layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh'] }—— 控制元素顺序和显隐,缺哪个就少哪个 -
page: { curr: 1, limit: 10, limits: [10, 20, 50] }—— 这三个是联动基础,漏掉limits会导致limit下拉不出现 - 常见错误:
layout里写错字符串,比如写成'pages'或'pagination',实际只认官方文档列出的那几个关键词
如何让分页栏只显示「上一页/下一页/当前页/总数」,去掉跳转和每页条数选择
这是最常被问的定制需求。核心是重写 layout 数组,并确保不传 limits(否则下拉框仍会渲染)。
注意:即使不想要每页条数选择,limit 字段也必须存在,否则翻页请求参数里没有 limit,后端收不到每页数量。
- 正确写法:
page: { layout: ['count', 'prev', 'page', 'next'], limit: 15 } - 错误写法:
page: { layout: ['count', 'prev', 'page', 'next'], limits: [] }—— 空数组会让 layui 内部报Cannot read property 'length' of undefined - 如果硬要删掉
limits,得手动在request回调里补全limit参数,否则接口拿不到分页大小
自定义文字或图标时,为什么 prev 和 next 不生效
layui 不允许直接改 prev/next 的文本内容,它们是固定字符串。想换箭头、加 icon、改成「上一章」「下一章」,只能靠 DOM 操作或 CSS 伪元素。
但要注意时机:表格渲染完成(done 回调)之后再操作,否则元素还没生成。
- 推荐做法:在
done: function(res, curr, count) { ... }里用$('.layui-table-page .layui-laypage-prev')找到元素,用.html('◀ 上一页')替换 - 避免在
render前操作,此时分页 DOM 尚未挂载 - 如果用了 laypage 单独渲染,和 table 的分页是两套逻辑,别混用
服务端分页下,自定义布局后总数不更新
服务端分页时,count 值来自接口返回的 count 字段(不是 data.length)。如果 layout 里写了 'count',但接口没返回 count,就会显示「NaN 条」或空白。
这不是布局问题,是数据契约没对齐。layui 不会帮你算总数,它只负责展示你给它的值。
- 后端接口必须返回
{ code: 0, msg: '', count: 123, data: [...] },且count是总条数,不是当前页条数 - 前端配置里不能漏掉
response: { count: 'count' }(如果后端字段名不是count) - 调试时打开浏览器 Network 面板,确认响应体里真有
count字段,且类型是 number
layout 就完事,却忽略了 limits、count、response 这些配套字段的约束。











