table.render 是唯一正确初始化方式,url 和 page 必须显式传入;漏传会导致 loading 卡住;事件用 lay-event 而非 onclick;数据更新须改 cache 并 reload;form 校验需手动调用 verify()。
table.render 是唯一入口,url 和 page 必须显式传入
直接调用 table.init 会卡在 loading 状态,layui 2.8+ 已废弃该方法。table.render 才是正确初始化方式,它自动绑定分页、排序、事件监听等能力。
常见错误:后端返回了数据,但表格空白或只显示 loading —— 很可能漏传了 url 或没开启 page。
-
url必须是真实可访问接口,返回格式严格为{code: 0, count: N, data: []} - 若用 mock 数据,需手动包装结构,不能直接返回数组
- 启用了
height或limit,后续table.reload时必须一并传入,否则分页器重置、高度失效
按钮事件必须用 lay-event,别写 onclick
表格内操作按钮(如编辑、删除)放在 templet 中时,onclick 绑定完全无效。Layui 表格事件系统只识别 lay-event 属性。
例如:<button lay-event="edit">编辑</button>,然后在 table.on('tool(demo)', function(obj){...}) 中处理。
- 事件名(如
"edit")要和lay-event值完全一致,大小写敏感 - 获取当前行数据:用
obj.tr.data('index')拿到索引,再查table.cache['demo'][index] - 不要用
$(obj.tr).find('td').eq(1).text()这类 DOM 取值,容易因排序/搜索后错位
form 提交前必须手动校验,不能依赖 submit 回调拦截
form.on('submit()') 触发时,表单早已提交,校验只能做事后提示。真正有效的做法是在点击「确定」按钮的回调里主动调用 form.verify() 并判断返回值。
PigX UI Pro 前端开发指南 - Vue 3 + TypeScript + Element Plus。当用户提到 PigX UI、PigX 前端、lgb-mgui 项目、Vue 3 企业级后台开发、Element Plus 后台开发时使用此技能。
立即学习“前端免费学习笔记(深入)”;
常见坑:form.verify 的回调函数里写 return false 不会中断流程,必须用 layer.msg() 提示 + return 提前退出函数体。
- 校验规则的
key名必须与<input name="xxx">完全一致 - 异步校验(如用户名是否已存在)要用
ajax+done回调,不能直接return - 弹窗里的
select渲染后需补调form.render('select'),否则form.val()取不到值
编辑和删除必须操作 cache + reload,别改 DOM
直接用 jQuery 修改表格单元格文本(如 $(obj.tr).find('td').eq(2).text('新值'))看似生效,但翻页、排序或搜索后内容就丢失 —— Layui 只认 table.cache 和接口响应作为数据源。
安全更新方式:修改 table.cache['demo'][index] 对应字段,再调用 table.reload();批量删则必须收集全量选中 ID,不能只取当前页。
- 编辑后
reload需带where参数,否则翻页后搜不到刚改的记录 - 删除前必须
layer.confirm二次确认,避免误点丢数据 - 批量删时,
table.checkStatus('demo')默认只返回当前页选中项,要跨页收集需自己遍历所有页缓存
form.render() 或 table.reload() 后,没验证是否真执行成功 —— 尤其在嵌套弹窗、异步回调里,常因作用域或时机问题导致渲染失效。

















