关于Element Table异步请求时监听不到数据改变的解决方案

Element Table

Element 官方地址

官方描述:用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。

出现问题的需求

以下案例是一个实际的开发Demo,实现的功能点如下

  1. 多行编辑 ,多行的数据编辑,解决编辑一行保存一次的痛点
  2. 编辑行后变色 将被编辑的行高亮样式 进行展示;
    在这里插入图片描述

功能快速解刨

编辑变色

使用row-class-name方法监听vue数据,实现动态调整样式的功能

在这里插入图片描述

tableRowClassName({row, rowIndex}) {
        if (row.modify) {
          return 'warning-row';
        }
        return '';
}

自定义列

使用自定义列模板,动态绑定行内数据

在这里插入图片描述

在修改页面内容输入的组件中加入change监听事件,参数是row

modify(row, index){
	row.modify = true
}

批量保存

保存成功后重置状态
在这里插入图片描述

BUG场景还原

修改数据,变色OK

在这里插入图片描述

执行保存

问题重现

此时已经保存成功,并且vue的数据已经重置,表格未刷新,需要再次修改内容才能刷新
在这里插入图片描述

问题分析

由于异步操作,导致el-table没有监听到数据改变,所有解决方案是手动调用el-table的刷新
但是网上并没有相关的解决的方案,所以只能翻寻源码
el-table的源码地址

最终找到了store.updateColunms() 方法
异步操作新增刷新代码:
在这里插入图片描述

问题解决

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值