vue-easytable 点击其他列进行排序时让指定一列排序不受影响
时间: 2023-10-09 18:14:23 浏览: 152
vue-easytable@2.16.3版本 拖动列 动态改变列宽大小实现
5星 · 资源好评率100%
要实现让指定一列排序不受影响,可以使用 `vue-easytable` 中的 `sort-change` 事件来监听表格排序变化,并在事件处理函数中判断当前点击的排序列是否是指定列,如果是,则将指定列的排序方式设置为默认排序(即不排序),否则按照默认的排序方式进行排序。下面是一个示例代码:
```vue
<template>
<div>
<VTable :columns="columns" :data="data" :sort-change="handleSortChange"></VTable>
</div>
</template>
<script>
import VTable from 'vue-easytable'
export default {
components: {
VTable
},
data() {
return {
columns: [
{ field: 'id', title: 'ID', width: 100 },
{ field: 'name', title: 'Name', width: 200 },
{ field: 'age', title: 'Age', width: 100 }
],
data: [
{ id: 1, name: 'John', age: 20 },
{ id: 2, name: 'Mike', age: 25 },
{ id: 3, name: 'Tom', age: 18 }
],
fixedColumn: 'id'
}
},
methods: {
handleSortChange(sort) {
if (sort.prop === this.fixedColumn) {
// 如果点击的是指定列,则将排序方式设置为默认排序(即不排序)
sort.order = null
} else {
// 否则按照默认的排序方式进行排序
this.data.sort((a, b) => {
const valA = a[sort.prop]
const valB = b[sort.prop]
if (sort.order === 'ascending') {
return valA > valB ? 1 : -1
} else if (sort.order === 'descending') {
return valA < valB ? 1 : -1
} else {
return 0
}
})
}
}
}
}
</script>
```
在上面的代码中,我们定义了一个 `fixedColumn` 变量来指定不参与排序的列,然后在 `handleSortChange` 方法中监听 `sort-change` 事件,并根据 `fixedColumn` 变量判断当前点击的排序列是否是指定列。如果是,则将排序方式设置为默认排序(即不排序),否则按照默认的排序方式进行排序。最后,我们将处理后的数据保存在 `data` 变量中,表格会自动重新渲染数据。
阅读全文