element-ui组件Table排序(sort-by),某些数据无需排序
在列中设置
sortable
属性即可实现以该列为基准的排序, 接受一个Boolean
,默认为false
。 可以通过 Table 的default-sort
属性设置默认的排序列和排序顺序。 可以使用sort-method
或者sort-by
使用自定义的排序规则。 如果需要后端排序,需将sortable
设置为custom
,同时在 Table 上监听sort-change
事件, 在事件回调中可以获取当前排序的字段名和排序顺序,从而向接口请求排序后的表格数据。 在本例中,我们还使用了formatter
属性,它用于格式化指定列的值, 接受一个Function
,会传入两个参数:row
和column
, 可以根据自己的需求进行处理
在使用table的默认排序时不是很灵活了,官方给了一个更灵活的办法sort-by
,如何使用呢?接下来举个例子。
有些数据不需要进行排序
<template>
<el-table
ref="tableEl"
:data="tableData"
style="width: 100%"
@sort-change="sortMethods"
>
<el-table-column prop="date" label="Date" sortable width="180" />
<el-table-column prop="name" label="Name" width="180" />
<el-table-column prop="address" label="Address" />
</el-table>
</template>
<script lang="ts" setup>
import { ref } from 'vue'
const tableEl = ref('')
let tableData: User[] = ref([
{
date: '5',
name: 'Tom1',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '3',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '2',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '4',
name: 'Tom',
address: 'No. 189, Grove St, Los Angeles',
},
{
date: '3',
name: '不排序',
address: 'No. 189, Grove St, Los Angeles',
},
])
const sortMethods = (_column) => {
const { order, prop } = _column
const list = []
tableData.value.forEach((_item) => {
list.push(_item)
})
if (order === 'ascending') {
tableData.value = list.sort((a, b) => {
let aVal = a[prop]
let bVal = b[prop]
if (a.name === '不排序' || b.name === '不排序') {
return 1
}
return aVal -bVal
})
} else if (order === 'descending') {
tableData.value = list.sort((a, b) => {
let aVal = a[prop]
let bVal = b[prop]
if (a.name === '不排序' || b.name === '不排序') {
return 1
}
return bVal - aVal
})
} else {
if (tableEl.value) {
tableEl.value.clearSort()
}
}
}
</script>
都看到这里了捎带脚重温一下数组的排序方法 sort()
吧。
sort()
方法用原地算法对数组的元素进行排序,并返回数组。默认排序顺序是在将元素转换为字符串,然后比较它们的 UTF-16 代码单元值序列时构建的
参数
compareFn
可选用来指定按某种顺序进行排列的函数。如果省略,元素按照转换为的字符串的各个字符的 Unicode 位点进行排序。
a
第一个用于比较的元素。
b
第二个用于比较的元素。
如果指明了 compareFn
,那么数组会按照调用该函数的返回值排序。即 a 和 b 是两个将要被比较的元素:
- 如果
compareFn(a, b)
大于 0,b 会被排列到 a 之前。 - 如果
compareFn(a, b)
小于 0,那么 a 会被排列到 b 之前; - 如果
compareFn(a, b)
等于 0,a 和 b 的相对位置不变。备注:ECMAScript 标准并不保证这一行为,而且也不是所有浏览器都会遵守(例如 Mozilla 在 2003 年之前的版本); compareFn(a, b)
必须总是对相同的输入返回相同的比较结果,否则排序的结果将是不确定的。
compareFn(a, b) 返回值 |
排序顺序 |
---|---|
> 0 | a 在 b 后 |
< 0 | a 在 b 前 |
=== 0 | 保持 a 和 b 的顺序 |
element-ui组件Table排序(sort-by),某些数据无需排序的更多相关文章
- (Element UI 组件 Table)去除单元格底部的横线
Element UI 组件 Table 有一个属性 border,添加它可以增加纵向边框,但是无法控制横线边框,因此即使是最简单的 el-table,也会包含一个底部横线. 这个底部横线其实是一个 b ...
- element ui组件的开始时间-结束时间验证
<el-date-picker v-model="seach.before" type="date" placeholder="开始时间&quo ...
- vue-cli按需引入Element UI组件
一.环境 使用vue-cli搭建的环境 二.安装 babel-plugin-component npm install babel-plugin-component -D 三.修改.babelrc文件 ...
- Element UI的Table用法
Table 表格 用于展示多条结构类似的数据,可对数据进行排序.筛选.对比或其他自定义操作. ¶基础表格 基 2016-05-02 王小虎 上海市普陀区金沙江路 1518 弄 2016-05-04 王 ...
- Element UI组件说明
-<el-card>-查询及展示列表页面-[v-show]属性控制显示隐藏-<el-card class="box-card" >-多标签页面-<el ...
- Element Ui中table实现表格编辑效果
主要以css实现 .tb-edit .el-input, .tb-edit .el-input-number, .tb-edit .el-select { display: none; width: ...
- element ui 合计/table show-summary
在el-table 上面加上show-summary就可以对table的数据进行合计 但是上次出现了合计栏有的为空,有的合计不对的情况,如果出现的是空,那么说明你渲染的数据有undefine(即后台返 ...
- element ui里面table分页,页数从0开始的怎么做?
需求: 后台请求的接口是从0页开始的,但是pagination是从1开始的,就是在点击pagination的第1页是后台转0 1首先在data里面定义为1,其他地方也是定义1 return { for ...
- 怎么样使element ui 的table某列变色
第一步.在el-table里面加上:row-style="rowClass" <el-table :data="targetCarList" border ...
- element ui的table的头部自定义
<el-table-column label="级别" min-width="120" prop="clueLevel" align= ...
随机推荐
- three.js一步一步来--如何画出一根线
下面是画出线的代码,可以参考一下哟~~ <template> <div style="width:1000px; height:800px"> <p& ...
- ng-alain组件st表格,实现点击表格行变色,或者渲染变色
实现点击表格行变色 html文件 <st #st [data]="data" (change)="changeClick($event)" [column ...
- Redis - 介绍与使用场景
简介 Redis 的全称是 Remote Dictionary Server,是一个使用 C 语言编写的.开源的(BSD 许可)高性能非关系型(NoSQL)的键值对数据库. Redis 的数据是存储在 ...
- Backbone前端框架解读
作者: 京东零售 陈震 一. 什么是Backbone 在前端的发展道路中,前端框架元老之一jQuery对繁琐的DOM操作进行了封装,提供了链式调用.各类选择器,屏蔽了不同浏览器写法的差异性,但是前端开 ...
- JSP第十一次作业
1.第十二周上机作业(邮件功能)的控制层代码改用为servlet实现.2.学习通发布了考试,截止到本周六. com.gd.dao BaseDao 1 package com.gd.dao; 2 3 ...
- ASP.NET Core - 入口文件
1. 入口文件 一个应用程序总有一个入口文件,是应用启动代码开始执行的地方,这里往往也会涉及到应用的各种配置.当我们接触到一个新框架的时候,可以从入口文件入手,了解入口文件,能够帮助我们更好地理解 ...
- IDEA启动报错 NoClassDefFound
很仔细的看了项目,发现jar包都齐全,没有问题,找了几天,都没有发现什么问题. 最后,想到可能是启动配置的问题,内存的问题 加了上面的配置-Xss2058k,设定程序启动时占用内存大小,正常启动
- vs2019编写代码时的光标变成了黑块,选中字时替换掉了黑块选中的字的解决方法
这是由于不小心按到了Insert键 解决方法:再按一下Insert就好了. 因为插入键(insert)是一个状态表示键 当你按倒它时,它会进入一个覆盖模式,在光标位置新输入字会替代原来的字:另一种为插 ...
- C#中的Byte,String,Int,Hex之间的转换函数
/// <summary> Convert a string of hex digits (ex: E4 CA B2) to a byte array. </summary> ...
- Cannot access child value on Newtonsoft.Json.Linq.JValue
开发项目框架为.net framework,遇到此问题原因是笔者在做接口转发时接口返回类型直接定义为了object类型,这导致格式化返回结果时出现如标题异常,具体代码如下 try { var resu ...