1. 简介
Layui是一款采用自身模块规范编写的前端UI框架,核心模块包括:jQuery、LayUI本身以及各类拓展模块。其中Layui的table模块非常实用,本文将介绍该模块中的基础参数。
2. 基础参数
2.1 数据渲染
Layui的table模块最基本的功能是用于表格数据的渲染,通过table模块提供的render方法来实现。下面是一个简单的例子:
<div id="demo"></div>
<script>
// 数据
var data = [
{id: 1, name: '张三', age: 20},
{id: 2, name: '李四', age: 22},
{id: 3, name: '王五', age: 24}
];
// table渲染
layui.use('table', function(){
var table = layui.table;
table.render({
elem: '#demo',
data: data,
cols: [[
{field: 'id', title: 'ID'},
{field: 'name', title: '用户名'},
{field: 'age', title: '年龄'}
]]
});
});
</script>
上面的例子中,我们先定义了一个data数组来存放表格数据,然后通过layui.use引入了table模块,最后调用了table.render方法进行数据渲染。其中,elem表示渲染的目标元素,data表示要渲染的数据,cols表示表头和对应列的数据。
2.2 数据操作
在table中,我们经常需要对表格数据进行编辑、删除等操作。Layui的table模块提供了一些列的操作和事件来实现这些功能。
2.2.1 工具条(toolbar)
工具条是一个可以在表格右侧添加按钮的功能。例如:
<table class="layui-hide" id="demo"></table>
<script>
layui.use('table', function(){
var table = layui.table;
table.render({
elem: '#demo',
url: '/demo/table/user/', //请求路径
toolbar: '#toolbarDemo' //工具条
,cols: [[
{type: 'checkbox'},
{field:'id', title:'ID', width:80},
{field:'username', title:'用户名'},
{field:'sex', title:'性别', width:80,
sort: true},
{field:'city', title:'城市'},
{field:'sign', title:'签名'},
{field:'experience', title:'积分', width:80,
sort: true},
{field:'score', title:'评分', width:80,
sort: true},
{field:'classify', title:'职业'},
{field:'wealth', title:'财富', width:135,
sort: true},
]]
});
});
</script>
<script type="text/html" id="toolbarDemo">
<div class="layui-btn-container">
<button class="layui-btn layui-btn-sm"><i class="layui-icon"></i>添加</button>
<button class="layui-btn layui-btn-sm"><i class="layui-icon"></i>删除</button>
</div>
</script>
上面的例子中,我们在table.render的参数中添加了一个toolbar属性,并指定了id为“toolbarDemo”的html元素。接着,我们在下面指定了一个id为“toolbarDemo”的标签为工具条。这时候可以看到页面右侧已经出现了两个按钮,分别是“添加”和“删除”。
2.2.2 事件监听(event)
Layui的table模块还提供了许多事件可以供开发者监听,通过这些事件,我们可以非常方便地实现一些操作,例如分页、排序、单元格编辑等等。
sort(tableId, filter, sort):监听表格排序事件
row(tableId, index, obj):监听行单击事件
rowDouble(tableId, index, obj):监听行双击事件
checkbox(tableId, obj):监听复选框选择事件
toolbar(tableId, obj):监听工具条操作事件
edit(tableId, obj):监听单元格编辑事件
例如,在表格的数据进行排序时,我们可以这样做:
<table class="layui-hide" id="demo"></table>
<script>
layui.use('table', function(){
var table = layui.table;
table.render({
elem: '#demo',
url: '/demo/table/user/',
toolbar: '#toolbarDemo',
cols: [[
{type: 'checkbox'},
{field:'id', title:'ID', width:80},
{field:'username', title:'用户名'},
{field:'sex', title:'性别', width:80,
sort: true},
{field:'city', title:'城市'},
{field:'sign', title:'签名'},
{field:'experience', title:'积分', width:80,
sort: true},
{field:'score', title:'评分', width:80,
sort: true},
{field:'classify', title:'职业'},
{field:'wealth', title:'财富', width:135,
sort: true},
]]
,page: true
});
// 监听表格排序事件
table.on('sort(demo)', function(obj){
console.log(obj.field); //输出当前排序的字段名
console.log(obj.type); //输出排序方式:desc(降序)、asc(升序)、null(空对象,默认排序)
console.log(this); //当前排序的 th 对象
// 重新渲染表格
table.reload('demo', {
initSort: obj, //记录初始排序,如果不设的话,将无法标记表头的排序状态。
where: { //请求参数
field: obj.field, //排序字段
order: obj.type //排序方式
}
});
});
});
</script>
以上代码中设置了需要进行排序的列,并在table.on方法中监听了sort事件,当用户对表格进行排序时,就会触发该事件,并重新渲染表格。
3. 结束语
通过以上的介绍,我们可以看出layui的table模块提供了非常多的功能和API,可以轻松实现表格的渲染、操作。通过自学和使用,我们可以更好地完成我们的工作。