ElementUI中el-table多列属性名称未知

1 功能简述

使用ElementUI中的el-table时可能会存在不知道对象属性名称,渲染el-table时只能根据不同的对象属性动态渲染。解决方法:先根据数据将未知属性整理成属性列表,再依据属性列表将数据修改为对象。

例如:

# 属性列表
attrArr= [
    { enTitle:'attr_0', chTitle:'属性_0', isShow:false },
    { enTitle:'attr_1', chTitle:'属性_1', isShow:true },
    { enTitle:'attr_2', chTitle:'属性_3', isShow:true }
]
# 数据列表
attrArr= [
    { 'attr_0': '属性_0_0', 'attr_1': '属性_0_1', 'attr_2': '属性_0_2' },
    { 'attr_0': '属性_1_0', 'attr_1': '属性_1_1', 'attr_2': '属性_1_2' }
]

2 截图

3 源代码

<template>
  <div class="combine_cell">
    <div class="cc_con">
      <el-table
        v-bind:data="dataArr">
        <el-table-column
          v-for="(attr, index) in newAttrArr"
          v-bind:key="index"
          v-bind:prop="attr.enTitle"
          v-bind:label="attr.chTitle">
        </el-table-column>
      </el-table>
    </div>
  </div>
</template>

<script>

export default {
  name: 'CombineMultiAttr',
  data(){
    return{
      dataArr: new Array(),
      attrArr: new Array()
    }
  },

  created(){
    let attrLen = 4;
    for(let i=0; i<attrLen; i++){
      this.attrArr.push({
        enTitle:'attr_'+i,
        chTitle:'属性_'+i,
        isShow:true
      });
      
      // 不显示第一列
      if(i==0){
        this.attrArr[i].isShow = false;
      }
    }

    for(let i=0; i<4; i++){
      let item = new Object();
      for(let j=0; j<attrLen; j++){
        item[this.attrArr[j].enTitle]=(this.attrArr[j].chTitle)+'_'+i;
      }
      this.dataArr.push(item);
    }
  },

  computed:{
    newAttrArr: function(){
      return this.attrArr.filter(item=>{
        return item.isShow;
      })
    }
  },

  methods:{

  }

}
</script>

<style scoped>

</style>

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值