• 解决 Element-ui中 表格(Table)使用 v-if 条件控制列显隐时数据展示错乱的问题


    本文 Element-ui 版本 2.x

    问题

    el-table-column 上需根据不同 v-if 条件来控制列显隐时,就会出现列数据展示错乱的情况(要么 A 列的数据显示在 B 列上,或者后端返回有数据的但是显示的为空),如下所示。

    <template>
      <div>
        <el-table
          :data="tableData"
          border
          size="mini"
          style="width: 100%">
          <el-table-column prop="date" label="登记日期" align="center" ></el-table-column>
          <el-table-column prop="name" label="姓名" align="center"></el-table-column>
          <el-table-column prop="age" label="年龄" align="center"></el-table-column>
          <el-table-column prop="sex" label="性别" align="center" v-if="flag1"></el-table-column>
          <el-table-column prop="height" label="身高" align="center" v-if="flag2"></el-table-column>
          <el-table-column prop="address" label="城市" align="center"></el-table-column> 
        </el-table>
      </div>
    </template>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    在这里插入图片描述

    解决方法

    在每个需要使用 v-if 或 v-else 的 el-table-column 上增加 key 作为唯一标识,这样渲染的时候就不会因为复用原则导致列数据混乱了。关于key值,一般习惯使用字段名,也可随机生成一个值,只要具有唯一性就可以。

    <template>
      <div class="home">
        <el-table
          :data="tableData"
          border
          size="mini"
          style="width: 100%">
          <el-table-column prop="date" label="登记日期" align="center" ></el-table-column>
          <el-table-column prop="name" label="姓名" align="center"></el-table-column>
          <el-table-column prop="age" label="年龄" align="center"></el-table-column>
          <el-table-column prop="sex" label="性别" align="center" key="sex" v-if="flag1"></el-table-column>
          <el-table-column prop="height" label="身高" align="center" key="height" v-if="flag2"></el-table-column>
          <el-table-column prop="address" label="城市" align="center"></el-table-column> 
        </el-table>
      </div>
    </template>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    拓展:关于 key Vue官方文档的说明
    在这里插入图片描述

  • 相关阅读:
    LeetCode 619, 58, 24
    字符串哈希
    神经多样性是什么意思,神经网络的可解释性差
    史上最全ubuntu18.04安装教程|搜狗输入法配置教程|网络配置|相关命令配置
    Mysql 数据库基础介绍
    英语写作中“展示”、“表明”demonstrate、show、indicate、illustrate的用法
    nodeJs--egg框架介绍
    计数排序(Counting Sort)
    从零开始学习 Java:简单易懂的入门指南之网络编程(三十七)
    three.js学习笔记
  • 原文地址:https://blog.csdn.net/ZYS10000/article/details/133971000