element-plus 官方表格排序問題小結(jié)
element-plus 官方API 默認(rèn)表格排序存在問題,一個(gè)list 被多組排序
修改后:
<template> <el-table :data="stateTable.table.data" @sort-change="(data) => handleSort(data, stateTable)" > </el-table> <template> <script setup> import { reactive } from "vue"; import { copyTableData, handleSort } from "@/hooks/useSortTable.js"; let stateTable = reactive({ table: { border: true, currentPage: 1, pageSize: 10, // 接口返回?cái)?shù)據(jù) data: [], // 表頭數(shù)據(jù) columns: [], }, }); const getTableData = async (data) => { copyTableData.value = [...stateTable.table.data] }; getTableData() </script>
useSortTable.js
import { ref } from "vue"; export const copyTableData = ref([]); export const sortByFieldDesc = (arr, field, order) => { arr.sort((a, b) => { const aValue = a?.[field]; const bValue = b?.[field]; let numA = typeof aValue === "string" && !isNaN(Number(aValue)) ? Number(aValue) : aValue; let numB = typeof bValue === "string" && !isNaN(Number(bValue)) ? Number(bValue) : bValue; if ( typeof numA === "string" && typeof numB === "string" && !isNaN(Date.parse(numA)) && !isNaN(Date.parse(numB)) ) { // 如果是日期類型的字符串,則按照日期排序 const dateA = new Date(numA); const dateB = new Date(numB); if (order === "descending") { return dateB - dateA; } else { return dateA - dateB; } } else { // 非日期類型,按照數(shù)字或其他類型的邏輯排序 if (order === "descending") { return numB - numA; } else { return numA - numB; } } }); return arr; }; // 修改handleSort函數(shù),使其接受stateTable作為參數(shù) export const handleSort = (data, stateTable) => { const { prop, order } = data; let reserveData = copyTableData.value.filter( (item) => item?.[prop] !== undefined && item?.[prop] !== null && item?.[prop] !== "-" ); let filterData = copyTableData.value.filter( (item) => item?.[prop] === undefined || item?.[prop] === null || item?.[prop] === "-" ); if (order !== null) { sortByFieldDesc(reserveData, prop, order); stateTable.table.data = reserveData.concat(filterData); } else { stateTable.table.data = [...copyTableData.value]; } };
到此這篇關(guān)于element-plus 官方表格排序問題的文章就介紹到這了,更多相關(guān)element-plus 官方表格排序內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
js中的document.querySelector()方法舉例詳解
這篇文章主要給大家介紹了關(guān)于js中document.querySelector()方法的相關(guān)資料,document.querySelector是JavaScript中的一個(gè)內(nèi)置方法,用于通過CSS選擇器選擇文檔中的第一個(gè)匹配元素,需要的朋友可以參考下2024-01-01原生js實(shí)現(xiàn)電商側(cè)邊導(dǎo)航效果
本文主要分享了原生js實(shí)現(xiàn)電商側(cè)邊導(dǎo)航效果的示例代碼以及原理分析。具有很好的參考價(jià)值,下面跟著小編一起來看下吧2017-01-01使用JavaScriptCore實(shí)現(xiàn)OC和JS交互詳解
JavaScriptCore是webkit的一個(gè)重要組成部分,主要是對JS進(jìn)行解析和提供執(zhí)行環(huán)境。下面這篇文章主要給大家介紹了使用JavaScriptCore實(shí)現(xiàn)OC和JS交互的相關(guān)資料,文中介紹的非常詳細(xì),需要的朋友可以參考學(xué)習(xí),下面來一起看看吧。2017-03-03JavaScript必知必會(huì)(九)function 說起 閉包問題
這篇文章主要介紹了JavaScript必知必會(huì)(九)function 說起 閉包問題的相關(guān)資料,需要的朋友可以參考下2016-06-06ES6新增數(shù)據(jù)結(jié)構(gòu)WeakSet的用法詳解
WeakSet和Set類似,同樣是元素不重復(fù)的集合,它們的區(qū)別是WeakSet內(nèi)的元素必須是對象,不能是其它類型。接下來通過本文給大家詳細(xì)介紹ES6新增數(shù)據(jù)結(jié)構(gòu)WeakSet的用法,感興趣的朋友一起看看吧2017-08-08