vue+element-ui动态生成多级表头,并且将有相同字段下不同子元素合并为同一个...

element表头要多层生成,下一级表头数据源必须是当前表头的子一级,这样一层一层嵌套可以生成多层表头:

 

要把数据处理成这种类型的数据

           var arr = [];
            for (var key in obj) {
              var item = {};
              item.children = new Object()
              item.children[key] = obj[key]
              item.id = res[0][key]
              item.lable = res[1][key];
              arr.push(item);
            }

 

在vue的页面上对于循环的处理也是要多层循环:

  <el-table-column v-for="(item,key1) in tablehead"  :key="key1" :label="item.lable" v-if="key1!=0">
         <el-table-column v-for="(value,key) in item.children" :prop="key" :key="key" :label-class-name="key" :label="value" :id="key">
          <!-- 如果要生成多层循环表头,在这里面一直嵌套处理一下就行了 -->
      </el-table-column>
    </el-table-column>

 对于用别人的ui框架,最好就是改下数据源,适应框架的数据源的结构:

之前数据结构是这种

 

现在要把每项相同lable的数据的children放在一个下面;

:

将相同字段合并为一个

            var temp = [],
                ob = {}
            for(var i in arr){
              let item = arr[i]
              if(!ob[item.lable]){
                temp.push({
                  lable:item.lable,
                  id:item.id,
                  children:item.children
                });
                ob[item.lable] = item.lable
              }else{
                for(var j in temp){
                  if(temp[j].lable == item.lable){
                    for(var o in item.children){
                      // 通过对象循环给把每个children的赋值给一个
                      temp[j].children[o]= item.children[o]
                    }
                  }
                }
              }
            }

 

转载于:https://www.cnblogs.com/Tohold/p/9604128.html

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值