element的el-table的列显示隐藏导致表格列显示错位

问题

使用element的el-table,需要在同一个表格的基础上,根据下拉操作显示隐藏部分表格列
初始状态显示无误,但是一旦操作列的显示隐藏之后就会导致列显示错位或者列显示不全

初始状态:
在这里插入图片描述
列显示隐藏之后:
在这里插入图片描述
原本应该自己显示一列,却跑到别人头上去了

感觉是表格没有重新渲染导致的

原先的代码:
获取列的方法:

getNewColumns() {
    let curData = [];
    let originColumn = this.columns;
    originColumn.forEach((col) => {
        if (!col.hasOwnProperty('isShow') || col.isShow) {
            curData.push(col);
        }
    });
    this.newColumns = curData;
    // 如果没有reloadTable,假如有列显示隐藏变化,会导致列显示错位
    this.reloadTable();
},

监听列,一旦变化就执行获取最新的列的信息

watch: {
    columns: {
        handler: function () {
            this.getNewColumns();
        },
        deep: true,
    },
},

在这基础上,尝试了reloadTable(),使用v-if对表格进行销毁重新渲染

<template>
    <div class="common-table">
        <el-table :data="tableData" height="100%" :border="border" v-if="reFreshTable">
        </el-table>
     </div>
</template>

在列变化之后,reloadTable()

reloadTable() {
    this.reFreshTable = false;
    this.$nextTick(() => {
        this.reFreshTable = true;
    });
},

可以正常显示
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值