必须自己保留配置对象引用,因layui.table.config存的是全局状态而非原始参数;可查$('#elem').data('lay-table').config但已被处理,table.cache仅存数据非配置。

table.render() 传入的配置对象必须自己保留引用
你无法从 Layui 内部“反查”出完整的原始配置参数,layui.table.config 里存的不是你的配置,而是 Layui 自己维护的全局状态(比如默认分页尺寸、模板缓存),和 table.render() 的入参无关。最直接有效的办法,是在调用时就存一份:
- 定义配置对象时用
const myTableConfig = { elem: '#demo', url: '/api/list', cols: [...] }; - 再传给
table.render(myTableConfig) - 后续任何时候都能直接读
myTableConfig,包括url、where、page、cols等全部字段
如果已经渲染完又没留引用,别硬扒 layui.table.index 或 table.getDoneObj —— 这些是私有属性,2.8+ 版本可能已失效或结构变动。
从 DOM 元素上取 config 属性(仅限已渲染且有 id)
表格容器元素(如 #demo)被渲染后,Layui 会把实例挂到 data('lay-table') 上,里面含一个 config 属性,但要注意它已被处理过:
- 字段名可能被标准化(例如
cols被转为二维数组,url可能已拼接了分页参数) - 不包含你传入时的函数(如
done、parseData)或原始对象引用(where是浅拷贝后的对象) - 必须确保表格已渲染完成,否则
$('#demo').data('lay-table')是undefined
示例:const inst = $('#demo').data('lay-table'); const cfg = inst && inst.config; —— 这能拿到近似配置,但不能替代你自己保留的原始对象。
templet 函数里怎么安全读当前表格配置
在列模板 templet 函数中,this 指向行数据,table 不在作用域内,直接写 table.config 会报错。正确方式是用双参数形式:
- 写成
templet: function(d, obj) { ... },其中obj.config.id是当前表格的id值 - 然后查
layui.table.config[obj.config.id]—— 这个 key 对应的值,是 Layui 在render()后写入的配置快照 - 注意:这个配置只在
id显式设置时才可靠;若没设id,Layui 自动生成的 key 不稳定,无法反查
别依赖 obj.config.cols 拿列宽或显隐状态——它不反映拖拽排序、手动隐藏等运行时变更,那些得查 DOM。
为什么 table.cache 和 table.getData() 都拿不到配置参数
table.cache['xxx'] 存的是数据,不是配置;table.getData('xxx') 返回的是当前页已加载的行数据(可能经过搜索/排序过滤)。两者都和「配置」完全无关:
-
table.cache['xxx']的值类型是Array,内容是原始响应里的data字段(远程)或你传的data数组(本地) -
table.getData('xxx')实际是遍历table.cache['xxx']并剔除被隐藏/过滤掉的行,返回一个视图快照 - 试图从这两个地方读
limit、sortField、where等字段,结果一定是undefined
真正动态变化的配置项(比如当前页码、排序字段、列宽)必须靠事件监听 + 手动维护,Layui 不提供统一入口“获取全量运行时配置”。











