laypage 的 limit 参数是初始化时核心分页参数,决定每页显示条数,必须为正整数且需前后端一致;动态修改须调用 laypage.render() 重新渲染,并确保 layout 包含 'limit' 才显示切换控件。

laypage 的 limit 参数控制每页条数
直接改 limit 就行,它是 laypage 初始化时最核心的分页参数之一。这个值决定当前页展示多少条数据,不是“默认值”而是“生效值”——只要传了,就会按它切数据。
常见错误是只改了前端 limit 却没同步调整后端接口的 pageSize 或分页逻辑,导致前端显示 20 条,后端只返回 10 条,页面空白或报错。
-
limit必须是正整数,设成0或负数会触发 laypage 内部校验失败,控制台报"limit must be a positive integer" - 如果用的是服务端分页(
curr+limit传给后端),确保后端也按相同limit值做OFFSET/LIMIT或skip/take - 动态修改时不要直接改配置对象,要用
laypage.render()重新渲染,例如切换下拉选每页条数后必须调一次完整 render
用下拉选择器动态切换 limit 的典型写法
用户点击“每页显示 10/20/50 条”时,不能只改 limit 变量,必须触发重新分页。laypage 本身不提供内置下拉,得自己绑事件 + 重 render。
示例关键片段:
<select id="limitSelect"><option value="10">10 条/页</option>
<option value="20">20 条/页</option>
<option value="50">50 条/页</option></select><div id="demo1"></div>
<script>
let currentPage = 1;
let currentLimit = 10;
// 首次渲染
function renderPage() {
laypage.render({
elem: 'demo1',
count: totalDataCount, // 总条数需真实获取
limit: currentLimit,
curr: currentPage,
layout: ['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'],
jump: function(obj, first) {
if (!first) {
currentPage = obj.curr;
currentLimit = obj.limit; // 注意:obj.limit 是当前选中的值
// 这里发请求,带 curr=obj.curr & limit=obj.limit
loadData(obj.curr, obj.limit);
}
}
});
}
document.getElementById('limitSelect').onchange = function() {
currentLimit = parseInt(this.value);
currentPage = 1; // 切换条数一般重置到第 1 页
renderPage(); // 必须重新 render 才生效
};
</script>
layout 里加 'limit' 才能显示条数切换按钮
很多人写了 limit 参数但界面上看不到下拉框,就是因为没在 layout 数组里声明 'limit'。它和 'count'、'skip' 一样,属于可选 UI 控件,不写就不出现。
-
layout默认值是['count', 'prev', 'page', 'next', 'limit', 'refresh', 'skip'](Layui 2.8+),但老项目可能用旧版默认值(不含limit),务必显式声明 - 加了
'limit'后,laypage 会自动插入一个下拉 select,选项值固定为 [10, 20, 30, 50, 100],不可自定义——想改选项就得自己写 DOM + 绑事件,如上一节所示 - 如果用了自定义下拉(比如上面的
#limitSelect),建议把layout里的'limit'去掉,避免两个控件冲突
服务端分页时 limit 和 count 的配合容易出错
count 是总数据条数,laypage 用它算总页数;limit 是每页几条。这两个值必须匹配:比如 count: 105,limit: 20,那总页数就是 Math.ceil(105 / 20) === 6。但如果后端实际只返回了 15 条(因 SQL 错误或条件过滤),而前端仍按 limit: 20 渲染,最后一页就会显示空内容。
- 后端返回的总条数(
count)必须是「满足同样查询条件下的全量总数」,不能是缓存值或估算值 - 前端传给后端的
limit必须和 laypage 当前配置的limit一致,别在请求里手写死pageSize=10 - 调试时打开浏览器 Network 面板,检查分页请求的 query 参数是否含
limit=xxx,响应 body 是否有对应条数的data数组
limit 看似简单,真正卡住人的往往是前后端对这个值的理解不一致,或者以为加了参数就自动联动,结果忘了重 render 或漏传给后端。











