layui table 分页自定义提示语需同时配置 page.count=false、parseData 中 return {count: n, data: [...]},并在 layout 中用 '共 data.count 条' 等插值字符串替换 'count'。
直接改 limits 或 limit 不起作用,真正控制分页工具条文字的是 page 对象里的 prev、next、jump 和 count 这几个字段,其中 count 是关键——它决定“共 xx 条”那段话是否显示、显示什么内容。
常见错误是只配了 page: true 或只改 limit,结果提示语还是默认的“共 100 条”。其实 count 默认为 true,但它的行为是:仅当后端返回了 count 字段时才渲染“共 x 条”,否则不显示。想强制显示自定义文案,得关掉自动逻辑,手动接管。
-
count: false关闭默认计数显示,避免和自定义文案冲突 - 用
layout数组把count换成自定义 HTML 片段,比如‘找到data.count条记录’ - 必须配合
parseData提前从响应中提取真实总数,存到data.count里,否则data.count是 undefined
后端返回的数据结构往往不是 layui 默认期待的 {count: 123, data: […]},比如可能是 {total: 123, list: […]},这时候不处理,count 就拿不到,自定义文案就只能写死或留空。
解决方法是在 parseData 回调里把总数赋值给 res.count(注意不是 res.data.count),这样后续 layout 渲染时 data.count 才能取到值。
- 不要在
parseData 里改 res.data 的结构来迁就 layui,默认它只认 res.data 是数组就行
- 一定要 return {count: xxx, data: xxx},否则 layui 会忽略你设的 count
- 如果后端没返回总数(比如流式分页),
count 只能设为 0 或留空,此时建议 layout 里用“已加载 data.length 条”这类动态文案
layout 是个字符串数组,顺序决定工具条上元素排列。默认是 [‘count’, ‘prev’, ‘page’, ‘next’, ‘limit’, ‘refresh’, ‘skip’]。要把“共 xx 条”换成自定义提示,就得把 ‘count’ 换成一段带插值的 HTML 字符串。
这个字符串里能用的变量只有 data 对象的属性,比如 data.count、data.limit、data.curr。别写 this.count 或 res.count,都无效。
- 正确写法:
‘共 data.count 条,当前第 data.curr 页’
- 错误写法:
‘共 ${data.count} 条’(ES6 模板字符串不支持) - 如果要加样式,直接写内联 style 或 class,layui 不会帮你加 wrapper 容器
- 别漏掉
prev、next 等必要控件,否则翻页按钮消失
最常踩的坑是:改了 layout,也写了 parseData,但提示语还是空白。大概率是三个地方没对齐:
-
page: {count: false} 忘了加,导致默认 count 和自定义文案同时渲染,后者被覆盖或错位
-
parseData 里没 return 新对象,或者 return 的对象没带 count 字段(哪怕值是 0)
- 表格重载时(比如
table.reload())没同步传入新的 page 和 parseData 配置,旧配置还在用
- 用了 layui 2.8+,但文档看的是老版本,新版本要求
layout 中的自定义字符串必须包含至少一个 data.xxx 插值,否则会被过滤掉
复杂点在于:提示语内容依赖后端响应结构、前端解析逻辑、layout 渲染时机三者严格匹配。少一个环节,就只剩空白。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/253195.html