我想要vue的el-table表格继续多重排序,代码演示
时间: 2023-12-02 14:04:44 浏览: 86
Vue.js实现可排序的表格组件功能示例
好的,以下是一个示例代码演示如何实现 el-table 的多重排序:
```html
<template>
<div>
<el-table :data="tableData" :default-sort="{prop: 'date', order: 'descending'}" :sort-method="sortTable">
<el-table-column prop="date" label="日期" sortable></el-table-column>
<el-table-column prop="name" label="姓名" sortable></el-table-column>
<el-table-column prop="address" label="地址"></el-table-column>
</el-table>
</div>
</template>
<script>
export default {
data() {
return {
tableData: [
{
date: '2021-01-01',
name: '张三',
address: '北京'
},
{
date: '2021-01-02',
name: '李四',
address: '上海'
},
{
date: '2021-01-03',
name: '王五',
address: '广州'
}
],
sortOrders: [
{
prop: 'date',
order: 'descending'
},
{
prop: 'name',
order: 'ascending'
}
]
}
},
methods: {
sortTable(data, sortOrders) {
const sortProps = sortOrders.map(order => order.prop)
const sortDirections = sortOrders.map(order => order.order === 'ascending' ? 1 : -1)
return data.sort((a, b) => {
for (let i = 0; i < sortProps.length; i++) {
const prop = sortProps[i]
const direction = sortDirections[i]
if (a[prop] > b[prop]) {
return direction
} else if (a[prop] < b[prop]) {
return -direction
}
}
return 0
})
}
}
}
</script>
```
以上代码中,我们通过在 el-table 组件上设置 `:default-sort` 属性来指定默认排序列和排序方向。然后通过 `:sort-method` 属性来指定一个排序方法,在该方法中实现多重排序逻辑。具体来说,我们可以在 `sortTable` 方法中先根据 `sortOrders` 数组中定义的属性和方向顺序构造出 `sortProps` 和 `sortDirections` 数组,然后依次对数据进行排序即可。在遍历 `sortProps` 数组时,如果两个元素在当前属性上的排序结果不同,则返回相应的正负数,以实现多重排序。
希望对你有所帮助!
阅读全文