基于Element组件下动态生成多级表头以及数据

介绍

element是一套基于vue的组件,本文主要介绍如何根据后端传输数据来动态生成表格。

代码

html

利用vue里的for循环来动态生成表头,再利用if语句判断是否有二级表头,并将对应key赋值给labelprop

<template id="table">
    <el-table :data="tableData" :stripe=true :border=true  height="80%"  class="tablehead">
      <!-- for循环 
      判断是否含有子类
      -->
      <el-table-column v-for="key in listhead" v-if="key[Object.keys(key)]!=null" :label="Object.keys(key).toString()"
        :prop="Object.keys(key).toString()">
        <el-table-column v-for="keychild in key[Object.keys(key)]" :label="keychild"
          :prop="keychild" sortable>
        </el-table-column>
      </el-table-column>
      <el-table-column v-else :label="Object.keys(key).toString()" :prop="Object.keys(key).toString()" sortable>
      </el-table-column>
    </el-table>
  </template>

js

先获取表头和表格内容,将表格内容push到数组并添加对应的key方便使用

 var listhead = test[0]; //获取表头
    var listbody = test[1]; //获取内容
    listhead = eval(listhead);
    //创建表格内容的数组
    var listbodyarr = [];
    for (i in listbody) {
      console.log(listbody[i][0])
     listbodyarr.push({
          '商品号': listbody[i][0],
          'a_1': listbody[i][1],
          'a_2': listbody[i][2],
          'a_3': listbody[i][3],
          'a_4': listbody[i][4],
          'b_1': listbody[i][5],
          'b_2': listbody[i][6],
          'b_3': listbody[i][7],
          'b_4': listbody[i][8],
          'C': listbody[i][9],
          'D': listbody[i][10],
          'E': listbody[i][11],
        });
    }
    new Vue({
      el: '#table',
      data: function () {
        return {
          tableData: listbodyarr,//表格内容
          listhead: listhead,//表头
        }

      }
    })

后端数据

假定后端数据如下展示格式

 var test = [
      [{
          "商品号": null
        },
        {
          " A": ["a_1", "a_2", "a_3", "a_4"]
        },
        {
          "B": ["b_1", "b_2", "b_3", "b_4"]
        },
        {
          "C": null
        },
        {
          "D": null
        },
        {
          "E": null
        }
      ],
      [
        ["1234", 0, 4, 0, 4, 0, 4, 0, 4, 0, 0, 0],
        ["12345", 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0],
        ["23123", 6, 1, 2, 9, 3, 0, 7, 10, 2, 0, 0],
        ["P123", 2, 1, 1, 4, 0, 0, 1, 1, 1, 0, 0],
        ["43244", 0, 4, 0, 4, 0, 4, 0, 4, 0, 0, 0],
        ["fsdf3", 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0],
        ["134324", 6, 1, 2, 9, 3, 0, 7, 10, 2, 0, 0],
        ["fsdf3", 2, 1, 1, 4, 0, 0, 1, 1, 1, 0, 0],
        ["3452", 0, 4, 0, 4, 0, 4, 0, 4, 0, 0, 0],
        ["1026", 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0],
        ["7527", 6, 1, 2, 9, 3, 0, 7, 10, 2, 0, 0],
        ["7788", 2, 1, 1, 4, 0, 0, 1, 1, 1, 0, 0],
        ["0yly", 0, 4, 0, 4, 0, 4, 0, 4, 0, 0, 0],
        ["wuhu", 0, 1, 0, 1, 0, 1, 0, 1, 0, 0, 0],
        ["saber1", 6, 1, 2, 9, 3, 0, 7, 10, 2, 0, 0],
        ["23344", 2, 1, 1, 4, 0, 0, 1, 1, 1, 0, 0],
      ]
    ]

结语

Element是一个功能强大的组件,如有更好的方法、疑问或者错误之处欢迎大家指正。对不同格式数据的处理问题也可以私聊或者在评论区讨论。

  • 9
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 18
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 18
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值