sortParams: {}, // 存储排序状态 { columnKey: 'asc'/'desc' }
columns: [
{
title: '姓名',
key: 'name',
sortNumber:1,
renderHeader: (h, { column }) => {
//console.log('this.app',this.app)
if (this.app){
return this.app.renderSorterHeader(h, column);
}
}
},
{
title: '年龄',
key: 'age',
sortNumber:0,
renderHeader: (h, { column }) => {
//console.log('this.app',this.app)
if (this.app){
return this.app.renderSorterHeader(h, column);
}
}
},
// 其他列...
],
renderSorterHeader(h, column) {
console.log('this.sortParams',this.sortParams,'column',column)
let currentOrder ;
if ( this.sortParams[column.sortNumber]){
currentOrder = this.sortParams[column.sortNumber].currentOrder;
}
return h('div', {
class: '',
}, [
h('span', {},[column.title]),
h('span', {
class: 'ivu-table-sort',
}, [
h('i', {
class: {
'ivu-icon': true,
'ivu-icon-md-arrow-dropup': true,
'on': currentOrder === 'asc'
},
on: {
click: () => this.handleSort(column,'asc')
}
}),
h('i', {
class: {
'ivu-icon': true,
'ivu-icon-md-arrow-dropdown': true,
'on': currentOrder === 'desc'
},
on: {
click: () => this.handleSort(column,'desc')
}
})
])
]);
},
handleSort(column,order) {
let col = {
'ordertext':column.key+" "+column.order+(column.order=='desc'?' nulls last':' nulls first'),
'currentOrder':order,
'column':column,
}
if ( this.sortParams[column.sortNumber]){
const currentOrder = this.sortParams[column.sortNumber].currentOrder;
if (currentOrder===order){
this.$delete(this.sortParams, column.sortNumber);
}else {
this.$set(this.sortParams, column.sortNumber, col);
}
console.log('currentOrder',currentOrder)
}else {
this.$set(this.sortParams, column.sortNumber, col);
}
// 获取对象的所有键
const keys = Object.keys(this.sortParams);
// 对键进行排序
keys.sort((a, b) => a - b);
for (let i = 0; i < keys.length; i++) {
const key = keys[i];
const value = this.this[key];
console.log(`键: ${key}, 值: `,value);
}
}
效果如下: