Element UI的el-table组件时, 外部表格的数据更新导致内部折叠行强制关闭

el-table外面展示内容调的接口1,折叠里面的数据调接口2,。现在接口1每3.5秒刷新一次表格,接口2只有展开折叠才调用,并且希望实现:折叠展开后,不受接口1的刷新影响关闭

@expand-change="handleExpandChange" --点击折叠展开事件

el-table新增
row-key="index" :expand-row-keys="expands"

折叠组件内部:
<el-table-column type='expand'>
        <template slot-scope='props' v-if=' dataLoaded'>

创建一个expends数组,用于存储展开的keys。

由关闭变展开时,将该行的下标存放进去。

 由展开变关闭时,将该行的下标删除。

 const index = this.expands.indexOf(row.index);
      if (expanded) {
        if (index === -1) { // 如果该行未展开,则添加索引到 expands 数组
          this.expands.push(row.index);
        } else {
        if (index !== -1) { // 如果该行已展开,则从 expands 数组中移除索引
          this.expands.splice(index, 1);
        }
expand-row-keys可以通过该属性设置 Table 目前的展开行,需要设置 row-key 属性才能使用,该属性为展开行的 keys 数组。
 <el-table :data='tabel_data' row-class-name='my-row' @expand-change="handleExpandChange" row-key="index" :expand-row-keys="expands"
    >

async handleExpandChange(row, expanded) {
      const index = this.expands.indexOf(row.index);
      if (expanded) {
        if (index === -1) { // 如果该行未展开,则添加索引到 expands 数组
          this.expands.push(row.index);
        }
        try {
          调接口
          this.dataLoaded = true; // 添加一个标志位 
        } catch (error) {
          console.error(error);
          this.dataLoaded = false; // 如果出错,也设置标志位为 false
        }
      } else {
        if (index !== -1) { // 如果该行已展开,则从 expands 数组中移除索引
          this.expands.splice(index, 1);
        }
        this.dataLoaded = false; // 如果 expanded 为 false,也设置标志位为 false
      }
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值