templet中无法通过this获取表格配置,应使用双参数function(d, obj)并结合layui.table.config[obj.config.id]安全读取url、limit等配置项。
templet里拿不到this.config,因为this指向行数据
在templet函数中直接写this.url或this.page会得到undefined——this此时就是当前行对象(比如{id: 1, name: '张三'}),和表格配置完全无关。layui 并没有把配置挂到this上,这是常见误判点。
也不要用layui.table.cache去碰配置:它存的是当前页的原始数据数组,不是url、limit这些设置项。
更不能写table.config——table变量在templet作用域里根本未定义,会报ReferenceError。
必须用双参数function(d, obj) + layui.table.config查表ID
obj是 Layui 2.6+ 稳定传入的第二个参数,里面含obj.config.id,这才是当前表格的真实 ID(即render()时设的id或elem的id属性值)。
拿到 ID 后,查layui.table.config[obj.config.id]就能安全读取完整配置,包括:url、page.curr、page.limit、where、cols等。
- 硬编码 ID(如
'userTable')容易出错,尤其页面有多个表格时 -
obj只在templet函数中有效,在event或toolbar回调里不自动传入 - 该方式在异步加载(
url模式)下也可靠,因为配置在render()时就已写入layui.table.config
想读当前页码?别从config里硬抠,要监听page事件
layui.table.config[id].page.curr只是初始化默认值,翻页后它不会更新。真实当前页码只能通过table.on('page(filter)', callback)获取,回调里的obj.curr才是实时值。
如果 templet 里真需要当前页码(比如生成带页码的跳转链接),得在done回调里把(curr - 1) * limit + 1算好,挂到layui.table.config[id]上供 templet 读取:
done: function(res, curr, count) {
var config = layui.table.config['myTable'];
config.__pageStartIndex = (curr - 1) * config.limit + 1;
}然后在 templet 里:var start = layui.table.config[obj.config.id].__pageStartIndex;
动态列或 reload 后,cols可能失效,别缓存引用
如果表格支持列显隐、拖拽排序或调用了table.reload(),layui.table.config[id].cols可能还是旧引用。每次操作后,都得重新用layui.table.config[obj.config.id].cols读取。
另外注意:cols是二维数组(对应多级表头),单级表头要取cols[0];type: 'checkbox'这类列不在cols里,它们是运行时插入的 DOM。
最易被忽略的是:这个路径layui.table.config是 Layui 内部属性,文档未公开,但 2.8.x 版本稳定可用——升级前务必验证。


















