必须用 table.reload() 重载表格,正确写法是显式传 url、where、page.curr 等参数;错误写法是修改 config.url 后 reload,因配置为只读快照,修改无效。
必须用 table.reload() 重载表格,不能直接改 config.url 或调用不存在的 table.set() ——layui 表格初始化后,配置对象是只读快照,改了也不触发请求。
点击按钮时怎么传新 URL 给 table.reload()
直接在 table.reload() 的参数里写死 url 字段,不传则沿用初始地址;别指望“改完 config 再 reload”能生效。
- 正确写法:
table.reload('demo', { url: '/api/users/active', where: { status: 1 }, page: { curr: 1 } }) - 错误写法:
table.config['demo'].url = '/api/users/active'; table.reload('demo')(无效) - 漏掉
page: { curr: 1 }会导致 reload 后强制跳回第 1 页,哪怕你只想换接口不翻页 - 如果要保持当前页码,得先取:
const curr = table.config['demo'].page.curr,再传进page: { curr }
reload 时哪些参数必须同步传,否则会丢状态
table.reload() 不是局部更新,而是按你传的参数做全量合并——没传的就回退到 render 初始值,排序、搜索、分页都会意外重置。
-
url:必须显式传,否则不变 -
where:必须传当前搜索条件对象,否则请求变空;别拼字符串,用对象让 Layui 自动处理编码和 method 适配 -
page:至少带{ curr: 当前页 },否则默认从第 1 页开始 -
initSort:如果支持排序,得传{ field: 'xxx', type: 'asc' },不然表头箭头消失、后端收不到排序参数 -
cols:不用传——只要列结构没变,reload 会自动沿用;变了才需重新传
动态切换接口后表格空白?先查返回格式和字段映射
控制台没报错但表格空,90% 是新接口返回结构不符合 Layui 默认约定:{code: 0, count: N, data: []}。
-
code必须是数字0(不是字符串"0") -
data字段必须存在且为数组;如果后端返回的是{result: {list: [...]}},必须用parseData映射:parseData: res => ({count: res.result.total, data: res.result.list}) - 跨域或鉴权场景下,确认新 URL 的 token 或 headers 是否仍有效;
table.reload()不继承旧请求头,如有需要得在request配置里手动加 - 避免重复调用
table.render()渲染同一容器——会导致 DOM 重复、分页器错位、事件绑定混乱
最易被忽略的是 where 的清理时机和 page.curr 的来源判断:搜索条件变了,但页码可能不该重置;而接口切换时,如果新接口不支持分页,page 就不该传,否则后端解析失败。这些逻辑得根据实际业务分支处理,不能无脑复用 reload 参数。


















