table.reload()必须传id参数才能定位表格,且id需与render时声明的完全一致;刷新时page.curr不传会跳首页,where参数是合并而非覆盖,需显式传{}清空;定时刷新须防重复创建定时器。

table.reload() 必须传 id 参数才能定位到指定表格
不写 id,table.reload() 就找不到目标表格——它不靠 DOM 元素、也不靠 lay-filter,只认初始化时显式声明的 id 字符串。漏掉这一步,调用再多次也毫无反应。
- 错误写法:
table.render({ elem: '#userTable', url: '/api/user' })→ 后续table.reload('userTable')会失败(因为没设id) - 正确写法:必须加
id: 'userTable',且和reload中传的字符串完全一致 - 如果用了变量存实例(如
const ins = table.render(...)),就该直接用ins.reload({}),别混用table.reload('xxx') - 多个表格共存时,每个
id必须唯一,否则 reload 会覆盖错对象
刷新时 page.curr 不传就会跳回第一页
table.reload() 默认重置分页状态,curr 归零即强制跳首页。想保持当前页,必须显式传入当前页码,且得从表格内部状态里实时读,不能硬写死或靠 DOM 取值。
- 安全取法:
const currPage = table.config['userTable']?.page?.curr || 1 - 调用示例:
table.reload('userTable', { page: { curr: currPage }, where: { status: 'active' } }) - 别用
$('input[lay-page]').val()这类方式——异步渲染下 DOM 值可能滞后或未更新 - 如果表格还没初始化完就调
reload,table.config可能为空,建议加空值判断
where 参数不是覆盖而是合并,清空旧条件要显式传空对象
where 是合并进原始请求参数的,不是替换。比如初始化时带 where: { id: 123 },又 reload 传 { status: 'done' },最终请求参数是 { id: 123, status: 'done' }。想清空所有条件,就得主动传 where: {}。
- 搜索框内容要实时读:
where: { keyword: $('#kw').val(), status: $('#statusSelect').val() } - token 或权限字段别硬编码在
where里,每次 reload 前从localStorage读最新值 - 后端返回数据结构必须含
data(数组)和count(总数),否则分页计算会错乱甚至空白 - 用浏览器 Network 面板确认响应体结构是否合规,尤其注意
count是总条数,不是当前页条数
定时刷新或工具栏按钮触发时,别让多个 reload 冲突
在 done 回调里写 setInterval(table.reload, 5000) 是典型错误:每次渲染都会新建一个定时器,旧的不清除,最终内存泄漏 + 请求乱序 + 表格反复闪动。
- 定时器应只创建一次,放在
table.render()外部,比如页面加载完后 - 用变量存住定时器 ID:
let timer = setInterval(...),出错时可手动clearInterval(timer) - 高频刷新(≤10 秒)建议加节流:用布尔标志位记录上一次请求是否完成,未完成则跳过本次
- 按钮若嵌在
<form></form>里,记得加type="button"或event.preventDefault(),否则整页刷新
url、where、page 三个参数也得全部显式传进去——少一个,行为就不可控。


















