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

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

2024-05-31 20:05:52 前端知识 前端哥 836 356 我要收藏

本文 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>

在这里插入图片描述

解决方法

在每个需要使用 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>

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

转载请注明出处或者链接地址:https://www.qianduange.cn//article/10261.html
标签
评论
发布的文章

npmjs官网(查询依赖包)

2024-06-07 00:06:56

npx使用及原理

2024-06-07 00:06:36

npm 包管理工具

2024-06-07 00:06:33

vue 思极地图开发

2024-06-07 00:06:28

大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!