关于element table排序 sort-change 和sort-method 的一些记录

今天表格自定义排序上出了点问题,检查发现是自身的疏忽,然后再解决问题的时候收获到了一些小知识。所以记录一下。

首先是 sort-change

sort-change 是 element表格用来监听排序变化的,只有当表格排序发生变化,才会触发这个事件,它并不只是监听某一列的排序,而是整个表格,所以它是要写在el-table上的,而不是el-table-column上。别写错地方了。
在这里插入图片描述

sort-change 主要有三个参数{ column, prop, order }
在这里插入图片描述
column是发生排序变化的列。
order是排序方式,有三个选项 ascending 升序、descending 降序、 null 默认排序
prop就是该列的prop。

关于sort-method

提sort-method之前先说一下sortable,只有在 el-table-columnsortable 为 true 的情况下。sort-method才有效。
el-table表格的每一列都可以有自己的排序方式,所以 sort-method是写在 el-table-column上的,不是在el-table上的,不要写错地方了,而且,不同于sort-change,它只是一个属性,不是事件监听,绑定的时候不要写成@sort-method="sortMethod",而是应该用:sort-method="sortMethod"(我就是这里写错了,导致事件一直没反应=。=)

sort-method 对数据进行排序的时候使用的方法,仅当 sortable 设置为 true 的时候有效,需返回一个数字,和 Array.sort 表现一致。

比如下面就是我的排序方法,有a 、 b两个参数,跟 js的sort方法一样,不熟悉的可以去百度0.0

若 a 小于 b,即 a - b 小于零,则返回一个小于零的值,数组将按照升序排列。
若 a 等于 b,则返回 0。
若 a 大于 b, 即 a - b 大于零,则返回一个大于零的值,数组将按照降序排列。

以上是数字排序,像字符串排序啊属性排序啊之类的。。可以自行扩展=。=

	// 排序方法
    sortMethod(a, b) {
      return a - b
    },
el-tableElement UI 提供的表格组件,sort-method 属性用于自定义表格的排序方式。具体步骤如下: 1. 在 el-table 组件上绑定 :data 属性,绑定表格需要显示的数据。 2. 在 el-table-column 组件上绑定 :prop 属性,绑定该列所对应的数据字段。 3. 在 el-table-column 组件上绑定 :sortable="customSort" 属性,开启该列的排序功能,同时传入一个自定义的排序函数。 4. 在 el-table 组件上绑定 :sort-method="sortTable" 属性,将自定义的排序函数传入表格组件。 示例代码如下: ```html <template> <el-table :data="tableData" :sort-method="sortTable"> <el-table-column prop="name" label="姓名" :sortable="customSort"></el-table-column> <el-table-column prop="age" label="年龄" :sortable="customSort"></el-table-column> <el-table-column prop="gender" label="性别" :sortable="customSort"></el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18, gender: '男' }, { name: '李四', age: 20, gender: '女' }, { name: '王五', age: 22, gender: '男' }, { name: '赵六', age: 19, gender: '女' } ] } }, methods: { customSort(sortObj) { // 如果需要自定义排序方式,可以在这里添加代码 return true; }, sortTable(sortObj) { // 根据 sortObj 对表格数据进行排序 const { prop, order } = sortObj; this.tableData.sort((a, b) => { const aValue = a[prop]; const bValue = b[prop]; if (order === 'ascending') { return aValue > bValue ? 1 : -1; } else { return aValue < bValue ? 1 : -1; } }); } } } </script> ``` 在上面的示例代码中,我们通过实现 sortTable 方法来自定义表格的排序方式。该方法接收一个 sortObj 参数,包含当前排序的字段和排序方式(升序或降序)。我们通过对 tableData 数组进行排序,来实现表格数据的排序
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值