不能,layui.table.getData()返回当前页渲染后数据;原始数据本地模式存于table.config.data,服务端模式需在done回调手动缓存。
layui.table.getData() 能拿到原始数据吗?
不能直接拿。layui.table.getdata() 返回的是当前页渲染后的数据(已过滤、已排序、已分页),不是初始化时传入的原始数据源。如果你在表格初始化后对数据做了增删改,或者启用了搜索/排序,这个方法返回的就和原始数组对不上了。
原始数据存在哪儿?看 table.config 的 data 字段
layui 表格实例化时,原始数据要么通过 data 配置项传入(本地模式),要么由 url 异步加载(服务端模式)。前者原始数据会完整保留在表格配置中;后者原始数据默认不保留,需要手动存。
- 本地渲染:初始化时用了
data: [{id: 1, name: '张三'}, ...]→ 原始数组始终可从table.config.data拿到(注意:这是引用,修改它会影响表格) - 服务端渲染:初始化只配了
url: '/api/list'→table.config.data是空数组,原始数据需在done回调里自己缓存,比如:done: function(res, curr, count){<br> window.myTableRawData = res.data; // 手动存起来<br>}
用 table.cache 时要注意什么?
table.cache['yourTableId'] 存的是当前页「去重后」的行数据(含 lay-id 等内部字段),不是原始数组,也不包含未渲染的页数据。它适合快速查某行状态,但不能当原始数据源用。
- 它只包含当前页数据,翻页后自动更新
- 如果原始数据有重复
id字段,table.cache会覆盖(因为 key 是 id) - 字段名若含点号(如
user.name),table.cache会转成下划线(user_name),和原始结构不一致
推荐做法:初始化时就存一份原始副本
不管本地还是服务端模式,最稳妥的方式是自己管理原始数据引用。不要依赖 layui 内部变量,避免后续升级行为变化带来的风险。
- 本地模式:
const rawData = [{id: 1, name: '张三'}, {id: 2, name: '李四'}];<br>table.render({<br> elem: '#demo',<br> data: rawData,<br> // ...<br>});<br>// 后续直接用 rawData,不碰 table.config.data - 服务端模式:
let rawData = [];<br>table.render({<br> elem: '#demo',<br> url: '/api/list',<br> done: function(res){<br> rawData = res.data || [];<br> }<br>});
原始数据是否被深拷贝、是否允许修改、是否要响应式更新 —— 这些都得你自己控制,layui 表格本身不负责维护这份“真相”。











