layui.table动态添加子级
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Title</title>
</head>
<link href="https://cdnjs.cloudflare.com/ajax/libs/layui/2.9.8/css/layui.min.css" rel="stylesheet">
<body>
<div id="test"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/layui/2.9.8/layui.min.js"></script>
<script>
layui.use(['table'], function () {
var $ = layui.jquery,
table = layui.table;
let data = [
{
"id": 1,
"name": "测试1",
"pid": 0
},
{
"id": 2,
"name": "测试2",
"pid": 0
},
{
"id": 3,
"name": "测试3",
"pid": 0
},
{
"id": 4,
"name": "测试4",
"pid": 0
}
]
table.render({
elem: '#test',
id: 'test',
data: data,
cols: [[
{
width: 50,
style: 'cursor: pointer;',
event: 'expand',
templet: function (d) {
if (d.pid === 0) {
if (d.expand) {
return `<div style="width: 100%;text-align: center"><i class="layui-icon" style="font-size: 20px; color: #1E9FFF;"></i></div>`
} else {
return `<div style="width: 100%;text-align: center"><i class="layui-icon" style="font-size: 20px; color: #1E9FFF;"></i></div>`
}
} else {
return `<div style="width: 100%;text-align: center"><i class="layui-icon" style="font-size: 20px; color: #c2c2c2"></i></div>`
}
}
},
{field: 'id', title: 'ID', templet: function (d) {
if (d.pid === 0) {
return d.id
} else {
return '子级'+d.id
}
}},
{field: 'name', title: '名称'}
]],
page: true,
limit: 20,
limits: [10, 15, 20, 25, 50, 100],
height: '400px'
})
table.on('tool(test)', function (obj) {
if (obj.event === 'expand'){
let index = obj.index;
let data = obj.data;
if (data.pid !== 0){
return false;
}
let tableId = obj.config.id
let tabEle = $(`[lay-id="${tableId}"] .layui-table-main`);
let top = tabEle.scrollTop()
if (table.cache[tableId][index]['expand']){
table.cache[tableId][index]['expand'] = false
let list = [];
table.cache[tableId].forEach((item) => {
if (item.pid === 0 || item.pid !== data.id){
list.push(item)
}
})
table.cache[tableId] = list
table.renderData(tableId);
tabEle.scrollTop(top);
}else{
let child = [];
for (let i = 1; i < 100; i++) {
child.push({
id: data.id + '-' + i,
name: '测试'+ data.id + '-' + i,
pid: data.id
})
}
table.cache[tableId][index]['expand'] = true
table.cache[tableId].splice(index+1, 0, ...child)
table.renderData(tableId);
tabEle.scrollTop(top);
}
}
})
});
</script>
</body>
</html>