Vue Element UI 动态表格与动态表头实现方案

作者:青团子

时间:2026-10-23

浏览:653

本文介绍如何在Vue中结合Element UI实现动态表格渲染。通过父组件向子组件传递tableData和tableLabel,利用v-for循环动态生成el-table-column,从而支持动态表头和数据展示。该方法解决了静态表格无法灵活适配多变数据结构的问题,为后续列操作扩展奠定基础。

文章目录

Vue动态表格实现概述

在Vue项目中集成Element UI时,可以通过封装表格组件来实现数据的动态渲染,同时支持动态生成表头。具体做法是在父组件中引入封装好的子表格组件,并将表格数据源和表头配置信息作为Props传递给子组件。

子组件模板结构

子组件内部的template模板结构如下:


<el-table 
  :data="this.tableData"
  height="400px" 
  max-height="400px" 
  size="small"
  row-class-name="row"
  cell-class-name="column"
  :row-style="setRowStyle"
  :cell-style="setColumnStyle"
  :highlight-current-row="true"
  @cell-click="cellClick"
  fit
  >
  <el-table-column
    v-for="(item, index) in tableLabel"
    :key="index" 
    :prop="item.prop" 
    :width="item.width" 
    :label="item.label">
  </el-table-column>
</el-table>

数据接收与处理

在子组件中通过props接收父组件传递的数据,包括表格数据tableData和表头配置tableLabel。


props: {
 tableData: { // 父组件传递过来的表格数据
    type: Array,
    default: []
  },
  tableLabel: { // 父组件传递过来的表头数据
    type: Array,
    default: () => {
      return []
    }
  }
}

父组件调用示例

父组件调用子组件的代码示例如下:


<file-table 
 :tableData="tableData"
 :tableLabel="tableLabel"
>
</file-table>


data() {
 return {
 // 子组件的表格数据
 tableData: [
  {id: 1, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 2, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 3, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 4, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 5, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 6, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 7, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 8, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 9, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 10, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 11, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05},
  {id: 12, date: '2018-07-24', sales: 23.34, sale: 137597.76, const: 102203.71, profit: 35394.05}
 ],
 // 子组件的表头数据
 tableLabel: [
      {label: '', width: '40', prop: 'id'},
      {label: '日期', width: '', prop: 'date'},
      {label: '销售量', width: '', prop: 'sales'},
      {label: '销售额', width: '', prop: 'sale'},
      {label: '成本', width: '', prop: 'const'},
      {label: '利润', width: '', prop: 'profit'}
    ]
 }
}

局限性与后续优化方向

需要注意的是,上述方案仅实现了基础的动态渲染。若需对每一列数据进行独立操作,由于Element UI自带的cell-click事件仅针对单元格点击,无法满足列级操作的需求。因此,需要进一步探索如何在动态渲染的基础上,实现每个组件列的可控操作,相关内容将在后续章节分享。

以上内容总结了Vue Element UI动态表格的基本实现方式,希望能对读者有所帮助。欢迎继续支持本站获取更多技术分享。

实用工具推荐

电子包浆

绿化、压缩、噪点和虚拟水印,自由调节做旧程度。

使用 ›
图片压缩

选择画质和输出格式,预览压缩前后的大小。

使用 ›
相关文章