table 列表前端操作保留状态,实现来回切换返显

9 篇文章 0 订阅

使用场景
table 列表中 用户操作时改变记录状态时,不实时调接口,切换到别的页数能来回返显操作过的状态,最后通过提交按钮一起提交

$set使用解决 如果在实例创建之后修改属性状态到实例上,它不会触发视图更新的问题

针对于操作项来说 关键代码

// 操作后记录当前操作项,存下,同事改变列表当前项的数据状态,这里不考虑操作以后和原来状态有没有发生改变(因为双数次会让状态回到初始撞他),只要操作了该项, 都保存下来
changeStatus(data, index) {
    this.tableData[index].complainStatus = 1; // 状态值改变,原来是null 赋值为1
    const changeItem = this.tableData[index];
    this.$set(this.tableData, index, changeItem);
    this.$set(
        this.allSelectData,
        index + (this.pageNum - 1) * 10,
        changeItem
      ); // 这里是针对某一项的,针对 index,所以allSelectData中会有为null的项,后续需要处理
    this.getChangeItem();
}
    
    // 获取列表状态改变项
getChangeItem() {
    this.resultList = []; // 最终提交的结果
      if (this.allSelectData.length) { // 处理为空的项摘除
        _map(this.allSelectData, v => {
          if (v) {
            this.resultList.push({ 
              id: v.id,
              complainStatus: v.complainStatus,
              entType: v.entType
            });
          }
        });
      }
    },

针对来回切换table列表来说 关键代码

// 因为切换的时候有去调接口,这里只考虑拿到当前页数据来说
假设这里现在调接口返回的数据为 data, 对 data进行处理,需要考虑 this.allSelectEntData是否存在,因为有可能没有操作而来回切换
if(this.allSelectData.length){
    const newTableData = []; // 存通过处理后最终展示的列表页数据
    data.list.map((item, index) => {
         this.allSelectData.forEach((d, i) => {
            if (item.code == d.code) { // 这里的 code 必须是唯一的,列表中不会有重复的
                item.complainStatus = d.complainStatus;
            }
        });
        newTableData.push(item);
    });
    this.tableData = newTableData;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值