解决element表格组件排序结果不正确问题

Posted 水星记_

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了解决element表格组件排序结果不正确问题相关的知识,希望对你有一定的参考价值。

前言

不知道大家在使用 element 表格组件时有没有发现表格列的排序功能,时好时不好,当数据都为个位数时,使用是正常的,一旦数据多元化后,排序就失去了作用,如下图:


解决方案

sort-method 方法

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

核心代码

:sort-method="(a,b)=>return a.age - b.age"

加上后效果


完整代码

<template>
  <div>
    <el-table stripe :data="tableData" border style="width: 100%">
      <el-table-column align="center" prop="name" label="姓名"></el-table-column>
      <el-table-column align="center" prop="sex" label="性别"></el-table-column>
      <el-table-column :sort-method="(a,b)=>return a.age - b.age" align="center" sortable prop="age" label="年龄"></el-table-column>
    </el-table>
  </div>
</template>

<script>
export default 
  data() 
    return 
      tableData: [
        
          name: "小红",
          sex: "女",
          age: "21",
        ,
        
          name: "小兰",
          sex: "女",
          age: "6",
        ,
        
          name: "小美",
          sex: "女",
          age: "18",
        ,
        
          name: "小蓝",
          sex: "女",
          age: "32",
        ,
      ],
    ;
  ,
;
</script>

动态表头时

上面我们演示的前端写死的表头,但有些场景可能表头都是后台数据返回的,那么这种情况该怎么进行排序呢,大家可以参考下面的代码。

<template>
  <div>
    <el-table stripe :data="tableData" border style="width: 100%">
      <el-table-column align="center" v-for="(item, index) in headData" :key="index" :prop="item.indexCode" :label="item.label" sortable
        :sort-method="(a, b) => return a[item.indexCode] - b[item.indexCode]">
      </el-table-column>
    </el-table>
  </div>
</template>

<script>
export default 
  data() 
    return 
      // 模拟表头数据
      headData: [
        
          indexCode: "age",
          label: "年龄",
        ,
      ],
      // 模拟表格数据
      tableData: [
        
          age: "19",
        ,
        
          age: "32",
        ,
        
          age: "22",
        ,
        
          age: "15",
        ,
      ],
    ;
  ,
;

以上是关于解决element表格组件排序结果不正确问题的主要内容,如果未能解决你的问题,请参考以下文章

在table中的前端排序

vue判断表格接收到的值为0显示正确

前端学习(3051):vue+element今日头条管理-表格组件基本使用

前端学习(3050):vue+element今日头条管理-表格组件基本使用

前端学习(3051):vue+element今日头条管理-表格组件基本使用

前端学习(3050):vue+element今日头条管理-表格组件基本使用