后台管理系统对于 Table 表格的使用是十分常见的,用于展示多条结构类似的数据,可对数据进行排序、筛选、对比或其他自定义操作。
当el-table
元素中注入data对象数组
后,在el-table-column中用prop属性
来对应对象中的键名即可填入数据,用label属性
来定义表格的列名。可以使用width属性
来定义列宽。
<template>
<el-table
:data="tableData"
style="width: 100%">
<el-table-column
prop="date"
label="日期"
width="180">
</el-table-column>
<el-table-column
prop="name"
label="姓名"
width="180">
</el-table-column>
<el-table-column
prop="address"
label="地址">
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}]
}
}
}
</script>
但是当列数很多的时候,我们这样写 20 个 <el-table-column />
,是不是会很冗余和臃肿,所以我们可以进行优化处理。我们观察每一列和tableData中数据的对应关系,是不是可以考虑使用 v-for
来遍历对象进行处理。原理其实就是:label是表头展示:所展示的数据是tableLabel对象中被遍历出来的value值;prop是数据展示:需要从 tableData数组中获取值的具体key,而Label对象中的key与之对应了。
如下是对结构和数据做的如下处理:
<template>
<el-table :data="tableData" style="width: 100%">
<el-table-column v-for="(val, key) in tableLabel" :key="key" :prop="key" :label="val" width="180" />
</el-table>
</template>
<script>
export default {
data() {
return {
tableData: [{
date: '2016-05-02',
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄'
}, {
date: '2016-05-04',
name: '王小虎',
address: '上海市普陀区金沙江路 1517 弄'
}, {
date: '2016-05-01',
name: '王小虎',
address: '上海市普陀区金沙江路 1519 弄'
}, {
date: '2016-05-03',
name: '王小虎',
address: '上海市普陀区金沙江路 1516 弄'
}],
tableLabel: {
date: '日期',
name: '姓名',
address: '地址'
}
}
}
}
</script>
昨天冬至,寝室煮了饺子吃呢❤️