实际开发场景中,需要勾选不同 页面的数据,如下图,常规的是如果在某一页中勾选了数据,那么切换页面后,你之前勾选的数据就消失了,如果想记录之前的数据,并且可操作(勾选进数组,反勾选出数组)

1.定义数据(说文雅点设计数据结构)
var table_data = new Array();//存放初始化加载的10条数据(我的分页一页10条数据,既存放当前页的这几条数据) var ids = new Array();//用于存放目标记录的id数组
2.书写checkbox,监听checkbox
adapterCheckbox:function{
table.on('checkbox(training-list)', function (obj) {
if (obj.checked == true) {
if (obj.type == 'one') {//勾选单条
ids.push(obj.data.id);
}
if (obj.type == 'all') {//勾选全部
for (var i = 0; i < table_data.length; i++) {
ids.push(table_data[i].id);//table_data 在步骤3中初始化请注意这块
}
}
} else {
if (obj.type == 'one') {
for (var i = 0; i < ids.length; i++) {
if (ids[i] == obj.data.id) {
ids = ids.filter(function (item) {
return item != ids[i];
});
}
}
} else {
for (var i = 0; i < ids.length; i++) {
for (var j = 0; j < table_data.length; j++) {
if (ids[i] == table_data[j].id) {
ids = ids.filter(function (item) {
return item != ids[i];
});
}
}
}
}
}
console.log(ids);
});
}
3.初始化 table_data 设置checkbox的回显
table.render({ //------------------------------------------常规table渲染
size: 'sm',
//设置表头
cols: [[
{type: 'checkbox', fixed: 'left'},
{field: 'name', title: '虚拟机名称'},
{field: 'virtualImageTag', title: '镜像系统'},
{field: 'virtualType', title: '平台类型'},
{field: 'createTime', title: '创建时间'}
]],
url: 'virtualMachine/queryListPage',
method: 'post',
where: Page.whereAges,
request: {
pageName: "current", //页码的参数名称,默认:page
limitName: 'size' //每页数据量的参数名,默认:limit
},
response: {
statusCode: 200, //成功的状态码,默认:0
msgName: 'message' //状态信息的字段名称,默认:msg
},
elem: '#training-list',
page: {
elem: 'pageDiv',
limit: 10,
limits: [10, 20, 30, 40, 50]
},
contentType: "application/json",
done: function (res, curr, count) {//-----------------跟table的使用是一样的,只是在done做了一些操作
table_data = res.data;//初始化数据;此处接收的是当前页的这10条数据
if (ids.length > 0) {
for (var i = 0; i < ids.length; i++) {
for (var j = 0; j < table_data.length; j++) {
if (ids[i] == table_data[j].id) {//匹配上就设为选中
//回显checkbox
$('.layui-table tr[data-index=' + j + '] input[type="checkbox"]').attr("checked", "checked");
form.render('checkbox');
}
}
}
}
//操作选中的行
Page.adapterCheckbox();
}
});
