要让Layui表格在初始化时不自动获取数据,核心方法是不设置 url 参数,然后在需要时通过 table.reload 方法动态加载。具体做法如下:
核心配置步骤
初始化表格时不设置
url:在table.render的配置项中,不要填写url。没有url,表格就不会在渲染时自动请求数据。手动触发数据加载:在需要加载数据的时候(例如,点击按钮、完成某些选择后),通过
table.reload方法,并在这个时候指定url和其他必要的参数(如查询条件)。
代码示例
以下是一个简单的代码示例,演示如何实现:
layui.use(['table'], function() {
var table = layui.table;
// 初始渲染表格,不设置 url,表格不会自动加载数据
table.render({
elem: '#batchTabel',
id: 'batchTabel', // 赋予一个id,便于后续reload
method: 'post',
// 注意:此处故意不设置 url
cols: [[
{ field: 'id', title: 'ID' },
{ field: 'name', title: '姓名' }
// ... 你的列配置
]],
page: true // 根据需要开启分页
});
// 示例:在某个按钮点击事件中手动加载数据
$('#yourButton').click(function() {
table.reload('batchTabel', { // 此处使用表格的 id
url: '/Sales/Batch', // 此时才设置后端接口地址
where: { // 可以附加额外的查询参数
key: 'value'
}
});
});
});关键配置说明
id: 'batchTabel':在初始渲染时,为表格设置一个唯一的id。这个id在后续使用table.reload方法刷新表格数据时至关重要。table.reload:这个方法用于重载表格数据。第一个参数是表格的id,第二个参数是新的配置项,你可以在其中指定之前未设置的url以及where等条件。
补充说明
关于分页:如果你的表格需要分页,即使在手动加载数据时,Layui表格的分页参数(
page,limit)也会在table.reload时自动发送到后端。你只需要确保后端接口能正确处理这些分页参数。如果初始数据为空,也可以考虑先不显示分页,待有数据后再显示,这通常需要后端配合返回总记录数count。数据格式:当通过
url加载数据时,请确保后端返回的JSON数据格式符合Layui表格的规范。如果你的返回数据格式与Layui默认格式不同,你可能需要在table.render配置中使用parseData和response进行解析和映射。
table.render({
// ... 其他配置
parseData: function(res) { // 解析数据
return {
"code": res.code, // 解析状态码
"msg": res.msg, // 解析提示文本
"count": res.count, // 解析数据长度
"data": res.data // 解析数据列表
};
},
response: { // 定义后端json格式
statusName: 'code', // 状态字段名称
statusCode: 200, // 成功状态码,默认为0
countName: 'count', // 总数字段名称
dataName: 'data' // 数据字段名称
}
});
评论区