解决elementui动态切换table列内容,出现数据闪动情况

功能描述:

动态显示表格的某些列的内容
二级表头也是动态显示

解决问题:

先看下我录制的gif图,会有数据闪动的情况
在这里插入图片描述

解决方法:

首先,不要使用v-show,要使用v-if。
其次,表格加载属于懒加载,所以每次切换内容需要让表格重新加载一次
实现方法:给表格加索引,每次切换改变索引值

直接上代码:

// 控制表格切换
<el-radio-group size="mini" v-model="listQuery.cntype" class="marginR10" @change="tabRadioType">
	<el-radio-button label="1">指标核查数据</el-radio-button>
    <el-radio-button label='2'>加标回收数据</el-radio-button>
</el-radio-group>

// 表格内容
<template>
    <el-table :data="tableList" :key="toggleIndex" height="100%" border style="width: 100%" size="mini">
          <el-table-column align="center" label="序号" min-width="50" type="index"></el-table-column>
          <el-table-column align="center" label="时间" min-width="100" prop="dataTime" v-if="isShowDataTime"></el-table-column>
          <el-table-column align="center" label="流域" min-width="100" prop="valley"></el-table-column>
          <el-table-column align="center" label="支干/断面" min-width="80" prop="crossSection"></el-table-column>
          <el-table-column v-for="(fh,index) in firstHeaders" :key="index" :label="fh.name">
            <el-table-column v-for="(sh,index) in fh.secondCols" :key="index+'2'" :prop="sh.code" :label="sh.name" min-width="110"></el-table-column>
          </el-table-column>
        </el-table>
</template>
<script>
    // data数据
    data(){
    	return {
    		isShowDataTime: true, // 默认显示 表格中时间,切换时隐藏
    		toggleIndex:0, // 设置索引默认值
    		tableList:[],
		      firstHeaders:[],
		      HC_tableList:[
		        {
		          dataTime: "2019-12-09",
		          valley:'呼兰河',
		          crossSection:'庆虹桥', 
		          PH_HC: "6.00",
		          PH_BJ: "N",
		          KMnO4_HC:'8.99',
		          KMnO4_BJ:'N',
		          NH_HC:'12.99',
		          NH_BJ:'N',
		        },
		        {
		          dataTime: "2019-09-09",
		          valley:'呼兰河',
		          crossSection:'大桥', 
		          PH_HC: "6.88",
		          PH_BJ: "N",
		          KMnO4_HC:'14.99',
		          KMnO4_BJ:'N',
		          NH_HC:'12.21',
		          NH_BJ:'N',
		        },
		        {
		          dataTime: "2019-09-09",
		          valley:'呼兰河',
		          crossSection:'大桥', 
		          PH_HC: "6.66",
		          PH_BJ: "N",
		          KMnO4_HC:'18.45',
		          KMnO4_BJ:'N',
		          NH_HC:'12.22',
		          NH_BJ:'N',
		        }
		      ],
		      HC_firstHeaders:[
		        { 
		          name:'PH值',
		          code: "PH",
		          secondCols:[
		            { 
		              code: "PH_HC",
		              name: "核查数据",
		            },
		            { 
		              code: "PH_BJ",
		              name: "数据标记",
		            }
		          ]
		        },
		        { 
		          name:'高猛酸钾',
		          colspan:2,
		          rowspan:1,
		          code:'KMnO4',
		          secondCols:[
		            { 
		              code: "KMnO4_HC",
		              colspan: 1,
		              name: "核查数据",
		              rowspan: 1,
		              secondCols: null,
		            },
		            { 
		              code: "KMnO4_BJ",
		              colspan: 1,
		              name: "数据标记",
		              rowspan: 1,
		              secondCols: null,
		            }
		          ]
		        },
		        { 
		          name:'氨氮',
		          code:'NH_N',
		          secondCols:[
		            { 
		              code: "NH_HC",
		              name: "核查数据",
		            },
		            { 
		              code: "NH_BJ",
		              name: "数据标记",
		            }
		          ]
		        },
		      ],
		      HS_tableList:[
		        {
		          dataTime: "2019-12-09",
		          valley:'兰河',
		          crossSection:'虹桥', 
		          PH_BeforeTime: "2019-12-23",
		          PH_BeforeData: "34.34",
		          PH_AfterTime:'2019-12-23',
		          PH_AfterData:'56.23',
		          KMnO4_BeforeTime: "2019-12-23",
		          KMnO4_BeforeData: "34.34",
		          KMnO4_AfterTime:'2019-12-23',
		          KMnO4_AfterData:'56.23',
		          NH_N_BeforeTime: "2019-12-23",
		          NH_N_BeforeData: "34.34",
		          NH_N_AfterTime:'2019-12-23',
		          NH_N_AfterData:'56.23',
		        },
		        {
		          dataTime: "2019-09-09",
		          valley:'呼兰河',
		          crossSection:'大桥', 
		          PH_BeforeTime: "2019-12-23",
		          PH_BeforeData: "34.34",
		          PH_AfterTime:'2019-12-23',
		          PH_AfterData:'56.23',
		          KMnO4_BeforeTime: "2019-12-23",
		          KMnO4_BeforeData: "34.34",
		          KMnO4_AfterTime:'2019-12-23',
		          KMnO4_AfterData:'56.23',
		          NH_N_BeforeTime: "2019-12-23",
		          NH_N_BeforeData: "34.34",
		          NH_N_AfterTime:'2019-12-23',
		          NH_N_AfterData:'56.23',
		        },
		        {
		          dataTime: "2019-09-09",
		          valley:'呼兰河',
		          crossSection:'大桥', 
		          PH_BeforeTime: "2019-12-23",
		          PH_BeforeData: "34.34",
		          PH_AfterTime:'2019-12-23',
		          PH_AfterData:'56.23',
		          KMnO4_BeforeTime: "2019-12-23",
		          KMnO4_BeforeData: "34.34",
		          KMnO4_AfterTime:'2019-12-23',
		          KMnO4_AfterData:'56.23',
		          NH_N_BeforeTime: "2019-12-23",
		          NH_N_BeforeData: "34.34",
		          NH_N_AfterTime:'2019-12-23',
		          NH_N_AfterData:'56.23',
		        }
		      ],
		      HS_firstHeaders:[
		        { 
		          name:'PH值',
		          code: "PH",
		          secondCols:[
		            { 
		              code: "PH_BeforeTime",
		              name: "加标前时间",
		            },
		            { 
		              code: "PH_BeforeData",
		              name: "加标前数据",
		            },
		            { 
		              code: "PH_AfterTime",
		              name: "加标后时间",
		            },
		            { 
		              code: "PH_AfterData",
		              name: "加标后数据",
		            }
		          ]
		        },
		        { 
		          name:'高猛酸钾',
		          colspan:2,
		          rowspan:1,
		          code:'KMnO4',
		          secondCols:[
		            { 
		              code: "KMnO4_BeforeTime",
		              name: "加标前时间",
		            },
		            { 
		              code: "KMnO4_BeforeData",
		              name: "加标前数据",
		            },
		            { 
		              code: "KMnO4_AfterTime",
		              name: "加标后时间",
		            },
		            { 
		              code: "KMnO4_AfterData",
		              name: "加标后数据",
		            }
		          ]
		        },
		        { 
		          name:'氨氮',
		          code:'NH_N',
		          secondCols:[
		            { 
		              code: "NH_N_BeforeTime",
		              name: "加标前时间",
		            },
		            { 
		              code: "NH_N_BeforeData",
		              name: "加标前数据",
		            },
		            { 
		              code: "NH_N_AfterTime",
		              name: "加标后时间",
		            },
		            { 
		              code: "NH_N_AfterData",
		              name: "加标后数据",
		            }
		          ]
		        },
		      ],
    	}
    }
    // 方法
    methods:{
    	// 每次需要切换时需修改布尔值和索引值,要注意,索引值只需不一样即可,没有其他特殊要求
    	tabRadioType(e){
	        if(e == 1){
	            this.tableList = this.HC_tableList;
	            this.firstHeaders = this.HC_firstHeaders;
	            // 每次需要切换时需修改表格的索引值,解决表格动态加载数据闪的问题
	            this.toggleIndex = 0
	            this.isShowDataTime= true
	        }else if(e == 2){
	            this.tableList = this.HS_tableList;
	            this.firstHeaders = this.HS_firstHeaders;
	            this.toggleIndex = 1
	            this.isShowDataTime= true
	        }
	    }
    }
</script>
### 回答1: ElementUI表格动态是指在表格中可以根据数据动态生成。这种功能可以让表格更加灵活,可以根据不同的数据展示不同的,提高表格的可读性和可用性。在ElementUI中,可以通过设置表格的columns属性为一个数组,数组中的每个元素代表一个,可以根据需要动态添加或删除。同时,还可以通过设置表格的data属性为一个数组,数组中的每个元素代表一行数据,可以根据数据的不同动态生成。 ### 回答2: ElementUI是Vue.js的一个UI组件库,其中有一个表格组件Table,支持动态动态指的是,在渲染表格时,可以根据需要动态添加、删除、修改动态使用起来十分简便,只需要在定义(Column Definition)中指定v-if或v-show绑定的值为true/false,就可以在表格动态控制的显示和隐藏。例如: <el-table :data="tableData"> <el-table-column label="姓名" prop="name"></el-table-column> <el-table-column label="性别" prop="gender"></el-table-column> <el-table-column label="年龄" prop="age" v-if="showAge"></el-table-column> </el-table> 在上面的代码中,tableData是表格数据源,name、gender、age是数据源中的字段,可以通过prop属性指定在表格中显示。在第三中,使用v-if绑定showAge变量,当showAge的值为true时,表格中会显示“年龄”这一;当showAge的值为false时,表格中不会显示“年龄”这一。 showAge可以在组件的data中初始化为false,然后在需要显示“年龄”这一的时候,通过this.showAge = true来改变它的值,即可动态添加该。 类似的,如果需要删除某一,只需要将绑定值改为false即可,例如this.showAge = false。如果需要动态修改,可以通过v-bind绑定属性来实现。 总的来说,ElementUITable组件支持动态非常方便,使用起来简单易懂,可以方便地满足各种业务需求。 ### 回答3: elementui table是一种基于Vue.js的组件,它可以在页面上轻松地创建和管理数据表格动态指的是在elementui table中可以根据数据动态地生成表格。这项功能在需要手动添加和删除或者在表格之间切换视图时非常有用。 要创建一个动态elementui table,首先需要将数据源传递给该组件。数据源是一个数组,其中每个元素都表示一个数据行,每个元素的属性名对应着表格中的名。例如: ``` [ { name: 'John', age: 30, gender: 'Male' }, { name: 'Jane', age: 25, gender: 'Female' }, { name: 'Bob', age: 40, gender: 'Male' } ] ``` 在elementui table中,可以使用v-for指令遍历数据源数组来动态生成表格的每一行。要动态生成表格,可以使用遍历数据源数组的方式来自动生成表头和表格内容。这样可以确保表格中的数据源数组中的属性一一对应,即使数据源的属性发生了变化也不会影响表格的显示。 在使用v-for指令时,可以使用Vue.js的计算属性computed和watch监听数据源数组的变化,以便在数据源发生变化时动态重新生成表格。这可以确保表格数据源的属性一直保持同步,而不需要手动添加或删除。 除了动态的功能外,elementui table还提供了许其他功能,如分页,排序,过滤和可编辑表格等。这使得elementui table成为使用Vue.js构建数据驱动应用程序的极佳选择。
评论 15
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值