vue+element实现非固定行列表格
实现:
Html
<script src="//unpkg.com/vue/dist/vue.js"></script>
<script src="//unpkg.com/[email protected]/lib/index.js"></script>
<div id="app">
<template>
<el-table :data="tableData" style="width: 100%">
<div v-for="(item,key) in tableData[0]" :key="item.id">
<el-table-column :label="key" :prop="key" width="180">
</el-table-column>
</div>
</el-table>
</template>
</div>
Script
var Main = {
data() {
return {
tableData: [{
date: '2016-05-02',
id:1,
name: '王小虎',
address: '上海市普陀区金沙江路 1518 弄',
}, {
date: '2016-05-04',
id:2,
name: '王1虎',
address: '上海市普陀区金沙江路 1517 弄',
}, {
date: '2016-05-01',
name: '王2虎',
id:3,
address: '上海市普陀区金沙江路 1519 弄',
}, {
date: '2016-05-03',
name: '王3虎',
id:4,
address: '上海市普陀区金沙江路 1516 弄',
},{
date: '2016-05-03',
id:5,
name: '王4虎',
address: '上海市普陀区金沙江路 1516 弄',
}],
}
},
}
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')
Css
@import url("//unpkg.com/[email protected]/lib/theme-chalk/index.css");
总结
可以发现,数据层面还是照平常api来给,一维层面的数据,只是不知道key值有多少个,通过改变html的结构来渲染数据。
虽然不知道有多少个key,但一旦给了数据,每个字典里key的数量是相同的
所以,v-for="(item,key) in tableData[0]"
取第一个字典的结构来遍历key,有多少个key,就有多少列。
:label="key" :prop="key"
遍历了以后,:label="key"
取的就是key对应的值,:prop="key"
属性为key