在Element UI的el-table
组件中,使用sortable
属性进行排序时,字符串进行排序是没有问题的,对日期进行排序时遇到了实际显示的排序与预期不符的情况。
原因分析:数据格式问题,el-table
默认按照字符串的方式进行排序,如果列的数据类型是字符串,但实际按数值或日期进行排序,可能会出现排序错乱。
解决办法:自定义sort-method方法。
代码示例:
// 原本代码
<el-table-column
prop="reportArchiveTime"
label="归档时间"
align="center"
min-width="150"
sortable
>
<template slot-scope="scope">
{{ formatTime(scope.row.progress.reportArchive.completedTime) }}
</template>
</el-table-column>
// formatTime函数改变了时间的表示方式(例如,将其格式化为易读的日期字符串),那么在进行排序时,Element UI可能会根据原始未格式化的日期进行排序,而不是基于格式化后的日期
// 修改后代码
<el-table-column
prop="reportArchiveTime"
label="归档时间"
align="center"
min-width="150"
sortable
:sort-method="(a, b) => {
const dateA = new Date(a.progress.reportArchive.completedTime);
const dateB = new Date(b.progress.reportArchive.completedTime);
return dateA.getTime() - dateB.getTime();
}">
<template slot-scope="scope">
{{ formatTime(scope.row.progress.reportArchive.completedTime) }}
</template>
</el-table-column>