合规国际互联网加速 OSASE为企业客户提供高速稳定SD-WAN国际加速解决方案。 广告
[TOC] ## lay-data(table) ``` id - 设定容器唯一ID <table class="layui-table" lay-data="{id:'idTest'}" lay-filter="test"> …… </table> page - 是否开启分页 <table class="layui-table" lay-data="{page:true}" lay-filter="test"> …… </table> limits - 每页数据量可选项 <table class="layui-table" lay-data="{limits:[30,60,90,150,300], limit:60}" lay-filter="test"> …… </table> loading - 是否显示加载条 <table class="layui-table" lay-data="{loading:false}" lay-filter="test"> …… </table> width - 设定容器宽度 <table class="layui-table" lay-data="{width:1000}" lay-filter="test"> …… </table> height - 设定容器高度 <table class="layui-table" lay-data="{height:315}" lay-filter="test"> …… </table> <table class="layui-table" lay-data="{height:'full-20'}" lay-filter="test"> …… </table> 设定表格外观(行列无边框,隔行背景,表格尺寸) <table class="layui-table" lay-data="{skin:'line/row/nob', even:true/false, size:'sm/lg'}" lay-filter="test"> …… </table> ``` ## lay-data (tr) ``` <table class="layui-table" lay-data="{page:true}" lay-filter="test"> <thead> <tr> <th lay-data="{checkbox:true}">checkbox</th> <th lay-data="{checkbox:true,LAY_CHECKED: true}">checkbox已选</th> <th lay-data="{field:'id'}">id</th> <th lay-data="{width:180}">width</th> <th lay-data="{space:true}">space</th> <th lay-data="{sort:true}">sort</th> <th lay-data="{fixed:'right|center|left'}">fixed</th> <th lay-data="{edit:'text'}">edit</th> <th lay-data="{templet: '#titleTpl'}">templet</th> <th lay-data="{toolbar: '#barDemo'}">toolbar</th> <th lay-data="{initSort:{field:'id', type:'desc'}}">initSort</th> </tr> </thead> </table> ``` ## 获取选中行 ``` <table class="layui-table" lay-data="{id: 'idTest'}"> …… </table> var checkStatus = table.checkStatus('idTest'); //test即为基础参数id对应的值 console.log(checkStatus.data) //获取选中行的数据 console.log(checkStatus.data.length) //获取选中行数量,可作为是否有选中行的条件 console.log(checkStatus.isAll ) //表格是否全选 ``` ## 事件监听 ``` <table class="layui-table" lay-filter="test"></table> table.on(); ``` ## 监听复选框选择 ``` table.on('checkbox(test)', function(obj){ console.log(obj.checked); //当前是否选中状态 console.log(obj.data); //选中行的相关数据 console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则为:one }); ``` ## 监听单元格编辑 ``` table.on('edit(test)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值" console.log(obj.value); //得到修改后的值 console.log(obj.field); //当前编辑的字段名 console.log(obj.data); //所在行的所有相关数据 data[field] = value; //更新缓存中的值 }); ``` ## toolbar - 绑定工具条 ``` <th lay-data="{toolbar: '#barDemo'}"></th> <script type="text/html" id="barDemo"> <a class="layui-btn layui-btn-mini" lay-event="detail">查看</a> <a class="layui-btn layui-btn-mini" lay-event="edit">编辑</a> <a class="layui-btn layui-btn-danger layui-btn-mini" lay-event="del">删除</a> <!-- 这里同样支持 laytpl 语法,如: --> {{# if(d.auth > 2){ }} <a class="layui-btn layui-btn-mini" lay-event="check">审核</a> {{# } }} </script> 注意:属性 lay-event="" 是模板的关键所在,值可随意定义。 ``` ## 工具条DEMO ``` //监听工具条 table.on('tool(test)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值" var data = obj.data; //获得当前行数据 var layEvent = obj.event; //获得 lay-event 对应的值 var tr = obj.tr; //获得当前行 tr 的DOM对象 if(layEvent === 'detail'){ //查看 //do somehing } else if(layEvent === 'del'){ //删除 layer.confirm('真的删除行么', function(index){ obj.del(); //删除对应行(tr)的DOM结构,并更新缓存 layer.close(index); //向服务端发送删除指令 }); } else if(layEvent === 'edit'){ //编辑 //do something //同步更新缓存对应的值 obj.update({ username: '123' ,title: 'xxx' }); } }); ``` ## 返回数据格式 ``` { code: 0, msg: "", count: 1000, data: [] } ``` ## 获取选中行 ``` <table class="layui-table" lay-data="{id: 'idTest'}"> …… </table> var checkStatus = table.checkStatus('idTest'); //test即为基础参数id对应的值 console.log(checkStatus.data) //获取选中行的数据 console.log(checkStatus.data.length) //获取选中行数量,可作为是否有选中行的条件 console.log(checkStatus.isAll ) //表格是否全选 ``` ## 事件监听 ``` <table class="layui-table" lay-filter="test"></table> ``` ### 监听复选框选择 ``` table.on('checkbox(test)', function(obj){ console.log(obj.checked); //当前是否选中状态 console.log(obj.data); //选中行的相关数据 console.log(obj.type); //如果触发的是全选,则为:all,如果触发的是单选,则为:one }); ``` ### 监听单元格编辑 ``` table.on('edit(test)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值" console.log(obj.value); //得到修改后的值 console.log(obj.field); //当前编辑的字段名 console.log(obj.data); //所在行的所有相关数据 data[field] = value; //更新缓存中的值 }); ``` ### 监听工具条 ``` //监听工具条 table.on('tool(test)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值" var data = obj.data; //获得当前行数据 var layEvent = obj.event; //获得 lay-event 对应的值 var tr = obj.tr; //获得当前行 tr 的DOM对象 if(layEvent === 'detail'){ //查看 //do somehing } else if(layEvent === 'del'){ //删除 layer.confirm('真的删除行么', function(index){ obj.del(); //删除对应行(tr)的DOM结构,并更新缓存 layer.close(index); //向服务端发送删除指令 }); } else if(layEvent === 'edit'){ //编辑 //do something //同步更新缓存对应的值 obj.update({ username: '123' ,title: 'xxx' }); } }); ``` ### 监听排序切换 ``` table.on('sort(test)', function(obj){ //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值" console.log(obj.field); //当前排序的字段名 console.log(obj.type); //当前排序类型:desc(降序)、asc(升序)、null(空对象,默认排序) console.log(this); //当前排序的 th 对象 //尽管我们的 table 自带排序功能,但并没有请求服务端。 //有些时候,你可能需要根据当前排序的字段,重新向服务端发送请求,如: table.reload('idTest', { initSort: obj //记录初始排序,如果不设的话,将无法标记表头的排序状态。 layui 2.1.1 新增参数 ,where: { //请求参数 field: obj.field //排序字段 ,order: obj.type //排序方式 } }); }); ``` ## 表格重载 这个我不太清楚,待使用后再来看! ``` 【HTML】 <table class="layui-table" lay-data="{id: 'idTest'}"> …… </table> 【JS】 table.reload('idTest', { url: '/api/table/search' ,where: {} //设定异步数据接口的额外参数 //,height: 300 }); ```