动态展示el-table表格表头

需求如图,在条件选择器选择了一项或多项条件后,将选中的条件作为表格表头展示:

1、下拉框中的数据结构为

options: [
    {
        value: 'value1',  //条件对应的编码
        label: '条件1'    //条件对应的文字名称
    },{
        value: 'value2',
        label: '条件2'
    },{
        value: 'value3',
        label: '条件3'
    }
    ...
]

所以选中后得到的数据一般为编码或是文字值:

[value1, value2, value3, ...]

// or

['条件1', '条件2', '条件3', ...]

但本次需求除了需要获取文字值作为表格表头展示外, 也需要相应的value值作为后续数据处理使用,所以条件选择器写为

<div class="content">
    <div class="contentTitle">条件:</div>
        <el-select
            v-model="condition"
            placeholder="请选择"
            clearable
            multiple
            value-key="label"
            style="width: 500px;">
                <el-option 
                    v-for="option in list" 
                    :key="option.value" 
                    :label="option.label"
                    :value="option">
                </el-option>
        </el-select>
    </div>
</div>

其中重点有二,一是将el-option 中的:value=""绑定为数组中每一项的整个对象,而不是对象下边的某个具体属性;二是绑定值为对象类型时必填value-key属性,它将作为 value 唯一标识的键名。

具体el-select各属性详解可见:Element - The world's most popular Vue UI framework

现在我们可以得到选中的数据为:

this.tableHeader = [
    {value: "value1", label: "label1"},
    {value: "value2", label: "label2"},
    ...
]

el-table组件使用:

<el-table :data="tableList" :key="Math.random()">
    <el-table-column
        v-for="header in tableHeaders"
        :key="header.value"
        :prop="header.value"
        :label="header.label">
        <template slot-scope="scope">
            <el-input v-model="scope.row[header.value]" placeholder="请输入">
        </template>
    </el-table-column>
</el-table>

注意要为table绑定key值,否则表头顺序会被打乱

  • 5
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值