今天来给表格组件加上排序功能,对比了 Element 和 iView 后决定功能和样式参考 Element,事件先暂实现一个 sort-change。
一、组件调用时的设置
// 增加 sortable 属性,其值可选 true / false / 'custom'[ { type: "selection", width: 60, align: "center" }, { type: "index", width: 60, align: "center" }, { title: "姓名", key: "name", width: 120 }, { title: "年龄", key: "age", width: 70, sortable: "custom" }, { title: "地址", key: "address" }, { title: "注册日期", key: "date", sortable: "custom" },]// 表格组件中,监听 sort-change 事件
// 事件处理函数doSort(key, order) { console.log(key, order);}
二、表格组件内的修改
具体的逻辑分享的时候已经交代的很清楚了,提醒大家注意的是这里的逻辑要分别考虑到到表格固定表头和不固定表头的情况,代码如下:
{{column.title}}
要注意的点:
- 排序的逻辑是点击表头排序(不同于iView),默认情况不排序,点击一次正序,第二次倒序,第三次不排序,依次类推
- 要考虑本页面排序和远程排序的情况
- 为了正确表示排序状态,我们需要把正在排序的列记录下来,否则会引起其它可排序列状态同步变化(!)
- 触发父组件事件,并传递父组件排序必须参数(要排序的字段和顺序)
- 为了不占表头高度,并且简单起见,排序指示器用了绝对定位,大家可以按实际情况取舍
下图是未固定表头情况下的排序情况(滚动条可以区分):
END,祝编程愉快!:)