1. layui table的sort排排序介绍
layui 是一个比较成熟的前端UI框架,它提供了很多的组件,其中 table 组件是比较常用的一个,用于数据展示。在实际开发中,我们常常需要对表格的数据进行排序,这时候 layui table 组件提供的 sort 排序功能就派上用场了。接下来就具体介绍一下 layui table 的 sort 排序功能的使用:
1.1 sort排序功能的基本用法
sort 排序功能的使用比较简单,只需要设置表头的 lay-sort 属性就可以了,其值可以是 asc(升序) 或 desc(降序)。
<table id="test">
<thead>
<tr>
<th lay-data="{field:'id',sort:true}">ID</th>
<th lay-data="{field:'username',sort:true}">用户名</th>
<th lay-data="{field:'email',sort:true}">邮箱</th>
<th>操作</th>
</tr>
</thead>
<tbody>
<tr>
<td>10001</td>
<td>user-1</td>
<td>user-1@test.com</td>
<td><button class="layui-btn layui-btn-xs">编辑</button></td>
</tr>
<tr>
<td>10002</td>
<td>user-2</td>
<td>user-2@test.com</td>
<td><button class="layui-btn layui-btn-xs">编辑</button></td>
</tr>
<tr>
<td>10003</td>
<td>user-3</td>
<td>user-3@test.com</td>
<td><button class="layui-btn layui-btn-xs">编辑</button></td>
</tr>
<tr>
<td>10004</td>
<td>user-4</td>
<td>user-4@test.com</td>
<td><button class="layui-btn layui-btn-xs">编辑</button></td>
</tr>
<tr>
<td>10005</td>
<td>user-5</td>
<td>user-5@test.com</td>
<td><button class="layui-btn layui-btn-xs">编辑</button></td>
</tr>
</tbody>
</table>
上面的代码就是最基本的使用方式了,其中 lay-data 属性用于设置 field 和 sort 可以在 layui 的 table 渲染之前生成,这样就可以设置表格的排序。
1.2 多重数据源的排序
在实际开发中,一个表格可能涉及到多个数据源的排序,此时可以通过对 table 组件配置 sort 属性的方式来实现。
// 给多个表格设置排序
table.render({
elem: '#test1'
,data: table1Data
,cols: [[
{type: 'checkbox','sort': true}
,{field:'user', title:'用户'}
,{field:'score', title:'评分','sort': true}
]]
,even: true
,limit: 5
});
table.render({
elem: '#test2'
,data: table2Data
,cols: [[
{type: 'checkbox','sort': true}
,{field:'user', title:'用户'}
,{field:'score', title:'评分','sort': true}
]]
,even: true
,limit: 5
});
以上代码中实现了对两个表格的多重数据源的排序,只需要在 cols 参数中给需要排序的列中的 sort 属性赋值即可。
1.3 配置自定义的排序方法
在实际开发中,有些时候需要根据非数字类型的数据来进行排序,此时可以配置自定义的排序方法。
// 自定义排序方法
function stringSorter(a, b) {
if (typeof a === 'string' && typeof b === 'string') {
return a.localeCompare(b);
} else {
return (a < b ? -1 : (a > b ? 1 : 0));
}
}
table.render({
elem: '#test'
,data: [{
'id': 10001,
'username': 'user-1',
'email': 'user-1@test.com'
}, {
'id': 10002,
'username': 'user-2',
'email': 'user-2@test.com'
}, {
'id': 10003,
'username': 'user-3',
'email': 'user-3@test.com'
}, {
'id': 10004,
'username': 'user-4',
'email': 'user-4@test.com'
}, {
'id': 10005,
'username': 'user-5',
'email': 'user-5@test.com'
}]
,cols: [[
{field:'id', title:'ID','sort': true}
,{field:'username', title:'用户名','sort': true, sortType: 'stringSorter'}
,{field:'email', title:'邮箱','sort': true}
,{title:'操作'}
]]
,even: true
,limit: 5
});
上面的代码中定义了一个 stringSorter 方法作为自定义的排序方法,当需要对非数字类型的数据进行排序时,可以通过为需要排序的列设置 sortType 属性,并将其值设置为刚才定义的方法名来实现。
1.4 总结
sort 排序功能是 layui table 组件中比较重要的一个功能,通过对表头的排序属性设置,可以实现对表格数据的排序。在实际开发中,需要根据不同的业务需求,对 sort 排序功能进行一定的自定义。