解决el-table排序sortable只排序当前页问题

el-table-column中添加sortable只是让每页数据单独排序,没有把所有数据进行排序,可以通过sort-change事件解决。

1、首先在需要排序的列上加sortable="custom"

javascript 复制代码
 <el-table-column
        prop="date"
        label="日期"
        width="180"
        sortable="custom">
 </el-table-column>

2、在el-table中加@sort-change="sortChange"

javascript 复制代码
 <el-table
      :data="tableData"
      style="width: 100%"
      @sort-change="sortChange">

3、最后添加排序方法sortChange,其中column.prop是属性名,column.order是排序方式

javascript 复制代码
sortChange(column){ 
        var type="";
        for(var i=0;i<this.tableData.length;i++){
          if(this.tableData[i][column.prop]!=null&&this.tableData[i][column.prop]!=undefined&&this.tableData[i][column.prop]!=''){
            type=typeof(this.tableData[i][column.prop]);
            break;
          }
        }
        if(this.tableData.length>0&&type!=""){
          if(column.order=="ascending"){
            this.tableData=this.tableData.sort((a,b)=>{
              if(a[column.prop]==undefined||a[column.prop]==null){
                a[column.prop]='';
              } 
              if(b[column.prop]==undefined||b[column.prop]==null){
                b[column.prop]='';
              }
              if(type=="number"){
                return a[column.prop]-b[column.prop]
              }else{
                return a[column.prop].localeCompare(b[column.prop])
              }
              })
          }else if(column.order=="descending"){
            this.tableData=this.tableData.sort((a,b)=>{
              if(a[column.prop]==undefined||a[column.prop]==null){
                a[column.prop]='';
              } 
              if(b[column.prop]==undefined||b[column.prop]==null){
                b[column.prop]='';
              }
              if(type=="number"){
                return b[column.prop]-a[column.prop]
              }else{
                return b[column.prop].localeCompare(a[column.prop])
              }               
            })
          }
        }
      },
相关推荐
掘金安东尼3 小时前
让 JavaScript 更容易「善后」的新能力
前端·javascript·面试
掘金安东尼3 小时前
用 HTMX 为 React Data Grid 加速实时更新
前端·javascript·面试
灵感__idea5 小时前
Hello 算法:众里寻她千“百度”
前端·javascript·算法
yinuo6 小时前
轻松接入大语言模型API -04
前端
袋鼠云数栈UED团队7 小时前
基于 Lexical 实现变量输入编辑器
前端·javascript·架构
cipher7 小时前
ERC-4626 通胀攻击:DeFi 金库的"捐款陷阱"
前端·后端·安全
UrbanJazzerati7 小时前
非常友好的Vue 3 生命周期详解
前端·面试
AAA阿giao7 小时前
从零构建一个现代登录页:深入解析 Tailwind CSS + Vite + Lucide React 的完整技术栈
前端·css·react.js
兆子龙8 小时前
像 React Hook 一样「自动触发」:用 Git Hook 拦住忘删的测试代码与其它翻车现场
前端·架构
兆子龙9 小时前
用 Auto.js 实现挂机脚本:从找图点击到循环自动化
前端·架构