iview中的table后端排序,页面数据跟接口返回的数据顺序不一致问题

当使用iview的table进行自定义排序(custom)时,需注意设置sortable属性,并添加on-sort-change事件处理排序方法。在changeSort方法中根据column的key和order调整排序逻辑,例如处理退货比例的排序,然后调用getList方法更新列表数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

iview中的table sortable排序时,发现页面数据跟接口返回的数据顺序不一样

iview table

{
   title: '退货比例',
   // sortable: true, // 错误写法
   sortable: 'custom', // 正确写法
   key: 'refundrate'
 }

iview
然后需要在table上加上排序方法就可以了
@on-sort-change='changeSort'

<Table border stripe highlight-row ref="tb" :loading="loading" :columns="tableColumns"
	 :data="tableData" @on-selection-change="selectionChange" class="commonTable"  
	 @on-sort-change='changeSort'>
 </Table>
methods: {
	// 根据排序 desc或asc
    changeSort({ column, key, order }) {
      if (key === 'refundrate') { // 退货比例
        if (order === 'normal') {
          this.args.order = 'rate desc'
        } else {
          this.args.order = `rate ${order}`
        }
        this.getList() // 获取列表
      }
    }
}

到这里你的问题就解决啦,评论记得扣个666

Vue前端使用IView(UI框架)并结合后端返回数据来制作带有复合列(compound columns)的Table表格,可以按照以下步骤操作: 1. **数据接收**: 首先,你需要在组件的生命周期函数里(比如`created`或`mounted`)通过axios或者其他HTTP客户端从后端获取数据。假设数据结构如下: ```json { "data": [ { "name": "张三", "info": { "age": 25, "address": "北京市" }, "items": [ { "name": "item1", "quantity": 10 }, { "name": "item2", "quantity": 5 } ] } ] } ``` 2. **数据解构**: 解析并提取出你需要显示在表头和行中的字段。例如,你可以将姓名、年龄、地址和每个商品的信息分开。 ```javascript data() { return { tableData: [], }; }, created() { axios.get('/api/data').then(res => { this.tableData = res.data.data.map(item => ({ name: item.name, age: item.info.age, address: item.info.address, items: item.items })); }); } ``` 3. **设置columns**: 在`columns`数组中,你可以定义复合列,包含多个单独的子列,这些子列通常是来自对象的同属性。 ```javascript computed: { compoundColumns() { return [ { title: '姓名', key: 'name' }, { title: '年龄', key: 'age', render(h, params) { return h('span', params.row.age); } }, { title: '地址', key: 'address' }, { title: '商品列表', children: [ { title: '商品名称', key: 'items[].name' }, { title: '数量', key: 'items[].quantity' } ] } ]; } }, ``` 这里的`children`表示嵌套的子列。注意在子列的`key`属性上使用的是路径表达式,用于动态访问对象的属性。 4. **渲染表格**: 现在可以在模板中使用`<Table>`组件,传入`columns`和`data`属性。 ```html <template> <div> <Table :columns="compoundColumns" :data="tableData"/> </div> </template> ``` 现在你应该能看到一个包含复合列的Table,展示了后端返回数据
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值