el-table单个、组合排序

379 阅读1分钟

1.单个排序:

template:

<el-table 
    @sort-change="sortHandler">    
<el-table-column      
    label="label"      
    prop="replicas"      
    :sort-orders="['ascending', 'descending', null]"    />
</el-table>

data:

orderArray: [],

methods:

// 单个排序 
sortHandler({ column, prop, order }) {      
    if (order) {        
        this.orderArray = [{ prop: prop, order: order,},];      
      } else {        
        this.orderArray = [];     
      }      
        this.query();    
    },

2.组合排序

template: 

 <el-table
    :header-cell-class-name="headerCellClassHandler"        
    @sort-change="sortHandler">    
    <el-table-column      
        label="label"      
        prop="replicas"      
        sortable="custom"      
        :sort-orders="['ascending', 'descending', null]"    />
</el-table>

data:

orderArray: []

methods:

headerCellClassHandler({ row, column, rowIndex, columnIndex }) {      
    this.orderArray.forEach((element) => {        
        if (column.property === element.prop) {         
             column.order = element.order;       
        }      
    });    
},    
// 组合排序    
sortHandler({ column, prop, order }) {      
    if (order) {        
        // 参与排序        
        let flagIsHave = false;        
        this.orderArray.forEach((element) => {          
            if (element.prop === prop) {           
                 element.order = order;            
                flagIsHave = true;          
            }        
        });        
        if (!flagIsHave) {          
            this.orderArray.push({            
                prop: prop,            
                order: order,         
            });        
        }      
    } else {        
         // 不参与排序        
         this.orderArray = this.orderArray.filter((element) => {          
            return element.prop !== prop;        
        });      
    }      
        this.query();    
    },