vue element 中的table动态渲染(动态表头)

通过在vue中使用element的table表格,实现数据动态渲染,并且动态渲染表头。通过在父组件中引入子组件表格,然后向子组件传递表格数据和表头数据。
子组件table中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: { // 父组件传递过来的表格数据
        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 table再带的方法是每个单元格点击事件,而不符合我们需求,如何能实现表格动态渲染,并且每个组件都能使用,还能够实现操作的可控的列,下节分享。

  • 20
    点赞
  • 79
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Vue2 和 Element UI 都是非常流行的前端框架,可以用来快速构建漂亮的用户界面。Element UI 提供了一个 Table 组件,可以用来展示数据,实现排序、筛选、分页等功能。 在 Vue2 ,使用 Element UI 的 Table 组件需要进行如下步骤: 1. 安装 Element UI 库,可以通过 npm 或者 CDN 方式引入。 2. 在 Vue 组件引入 Element UI 的 Table 组件,并注册为本地组件。 3. 在组件定义表格的数据和表头,通过 v-for 指令渲染出表格内容。 4. 配置 Table 组件的属性,包括表头、列的宽度、排序、筛选等功能。 5. 最后,将 Table 组件添加到页面即可。 以下是一个简单的示例代码: ```html <template> <div> <el-table :data="tableData"> <el-table-column prop="name" label="姓名"></el-table-column> <el-table-column prop="age" label="年龄"></el-table-column> <el-table-column prop="address" label="地址"></el-table-column> </el-table> </div> </template> <script> import { Table, TableColumn } from 'element-ui'; export default { name: 'MyTable', components: { 'el-table': Table, 'el-table-column': TableColumn, }, data() { return { tableData: [ { name: '张三', age: 18, address: '北京市' }, { name: '李四', age: 22, address: '上海市' }, { name: '王五', age: 28, address: '广州市' }, ], }; }, }; </script> ``` 需要注意的是,以上代码只是一个简单的示例,实际应用还需要根据具体需求进行配置和优化。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值