antd 表格sorter进行服务器排序

先直接上代码

<template>
  <Table
    :columns="columns"
    size="small"
    :data-source="tableDate.list"
    :on-change="tableOnChange"
  />
</template>
<script setup lang="ts">
 //接口引入
 import { getList } from '@/api/index';
 import { ref } from 'vue';
 const tableDate= ref({});
 //接口需要的参数,我这边的
 const params = {
    page: 1,
    pageSize: 6,
    //排序
    totalSort: 1,
    //排序
    freeSort: 0,
 };
 //调用接口
 const getListFun = async () => {
    const data = await getList(params);
    data.list.forEach((item, index) => {
      item.index = index + 1;
    });
    tableDate.value = data;
  };
  getListFun()

  //定义表头,然后需要排序的在对象里面设置sorter: true,
  const columns = [
    {
      title: '排名',
      dataIndex: 'index',
    },
    {
      title: '停车场名称',
      dataIndex: 'address',
    },
    {
      title: '总车位',
      dataIndex: 'total',
      sorter: true,
    },
    {
      title: '剩余车位',
      dataIndex: 'free',
      sorter: true,
    },
  ];
  //主要这一步,这个可以接收3个参,
  //第三个参数 s 里面有一个fieId,这个field 就是你刚刚在columns 里面填写的那个dataIndex的值,
  //点击不同的表头排序就会给field 赋值不一样dataIndex,如果存在多个排序的话,
  //通过field 的值进行一个判断,然后在进行排序
  const tableOnChange = (p, f, s) => {
    //第一个排序
    if (s.field == 'total') {
      if (params.totalSort == 1) {
        params.totalSort = 2;
      } else {
        params.totalSort = 1;
      }
      //把前一个排序的参数清空掉
      params.freeSort = 0;
      //调用接口方法
      getListFun();
    }
    //第二个排序
    if (s.field == 'free') {
      if (params.freeSort == 1) {
        params.freeSort = 2;
      } else {
        params.freeSort = 1;
      }
      //把前一个排序的参数清空掉
      params.totalSort = 0;
      //调用接口方法
      getListFun();
    }
  };
</script>

分析

 把需要服务器排序的把sorter设置为true

然后给标签绑定一个onChange

 然后onChange 绑定一个方法,我这边的方法名字叫tableOnChange

 如果只有一行需要服务器排序的话,就不需要定义三个形参,直接tableOnChange里面写逻辑就调用接口就好

如果存在2个以上的就需要判断唯一标识符了,不然你也不知道你点了那个是吧,在方法里面定义三个形参,第三个参 s 里面存在唯一标识符s.field 。

这个s.field 是你在columns里面给他定义的名字,你可以通过if判断他点击了那个表头然后进行一个接口的参数传递,和接口调用就可以了。

 以上react版本也是适用,其实方法都一样,就是写法不一样而已

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
在使用 Ant Design Vue 组件库的表格组件时,如果需要对日期列进行排序,可以使用 `sorter` 属性来指定一个比较函数来实现排序。下面是一个实现示例: ```vue <template> <a-table :columns="columns" :data-source="dataSource" row-key="key"></a-table> </template> <script> import moment from 'moment'; import { Table } from 'ant-design-vue'; export default { components: { 'a-table': Table, }, data() { return { dataSource: [ { key: '1', name: 'John Brown', age: 32, birthday: '1990-01-01', }, { key: '2', name: 'Jim Green', age: 42, birthday: '1980-02-15', }, { key: '3', name: 'Joe Black', age: 32, birthday: '1990-05-20', }, ], columns: [ { title: 'Name', dataIndex: 'name', key: 'name', }, { title: 'Age', dataIndex: 'age', key: 'age', }, { title: 'Birthday', dataIndex: 'birthday', key: 'birthday', sorter: (a, b) => moment(a.birthday) - moment(b.birthday), }, ], }; }, }; </script> ``` 在这个示例中,我们给表格的 `columns` 属性指定了一个包含三个列的数组,其中 `birthday` 列的 `sorter` 属性指定了一个比较函数,该函数使用 `moment` 库将日期字符串转换为日期对象并进行比较。当用户单击表头中 `Birthday` 列的排序按钮时,表格会根据指定的比较函数对数据进行排序。 需要注意的是,我们在 `sorter` 函数中使用了 `moment` 库来处理日期,因此需要先安装并导入 `moment` 库。另外,如果日期格式不是 `YYYY-MM-DD`,需要根据实际情况调整转换函数的参数。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值