layui分页不显示“共X页”是因page.layout缺'page'项,需配置layout:['count','prev','page','next','limit','skip']并确保parseData返回含count的对象。

layui分页条不显示“共X页”是配置缺项,不是bug
layui table 默认分页栏只渲染页码按钮和跳转控件,共X页,当前第Y页这类文案必须显式启用,否则永远不出现。核心问题不在样式或DOM结构,而在 page.layout 数组里漏了 'count' 或 'page' —— 这两个字段分别控制「共 xx 条」和「当前第 x 页,共 y 页」的开关。
必须配全 layout 数组,且顺序不影响显示
layout 是个白名单机制:写了才显示,不写就彻底隐藏。常见错误是只写 ['prev', 'page', 'next'],结果页码区域空着,或者写了 'count' 却没写 'page',导致只看到「共123条」但看不到页码信息。
-
page: { layout: ['count', 'prev', 'page', 'next', 'limit', 'skip'] }是最常用完整组合 -
'count'显示总条数(如「共123条」) -
'page'才真正触发「当前第2页,共13页」文案渲染(注意:它依赖count和limit计算总页数) -
'limit'和'skip'虽不直接参与页数计算,但缺失会导致页码栏布局错乱,间接影响'page'文案回显
后端字段名不叫 count?response 和 parseData 得一起动
layui 默认只认响应体顶层的 count 字段。如果后端返回的是 { total: 123 } 或 { data: { list: [], pagination: { total: 123 } } },光靠 response: { countName: 'total' } 只能解决第一种情况;第二种必须用 parseData 手动提取。
- 后端字段是
total→ 配response: { countName: 'total' } - 后端字段嵌套在
data.pagination.total→ 必须写parseData: res => ({ data: res.data.list, count: res.data.pagination.total }) - 无论哪种方式,
parseData函数必须return含data和count的对象,否则page文案因缺总数而无法计算总页数
done 回调里手动加文案?别碰,除非 layout 已失效
有人在 done 回调里用 jQuery 追加 共X页 DOM,再调 layui.element.init('laypage')。这方法能跑通,但属于绕过框架逻辑的补丁——一旦 layout 配置正确,完全没必要。更危险的是:手动插入容易破坏 .layui-laypage 内部结构,导致跳页事件丢失或样式重载失败。
- 优先检查
layout是否含'page',再确认count是否成功解析(打开 Network 面板看响应体里有没有被正确映射) - 如果
count是undefined,'page'文案一定为空,此时修parseData比修 DOM 更治本 - 手动 DOM 注入仅适用于 legacy 项目中无法修改原始配置的极端场景
真正卡住的地方往往不是代码写错,而是以为「配了 page: true 就够了」,却忽略了 layout 白名单和后端字段映射这两道硬门槛。只要 count 值能进表格内部状态,'page' 就会自动算出总页数并渲染文案——不需要额外计算、也不需要操作 DOM。


















