1 功能简述
使用ElementUI中的el-table时可能会存在不知道对象属性名称,渲染el-table时只能根据不同的对象属性动态渲染。解决方法:先根据数据将未知属性整理成属性列表,再依据属性列表将数据修改为对象。
例如:
# 属性列表 attrArr= [ { enTitle:'attr_0', chTitle:'属性_0', isShow:false }, { enTitle:'attr_1', chTitle:'属性_1', isShow:true }, { enTitle:'attr_2', chTitle:'属性_3', isShow:true } ] # 数据列表 attrArr= [ { 'attr_0': '属性_0_0', 'attr_1': '属性_0_1', 'attr_2': '属性_0_2' }, { 'attr_0': '属性_1_0', 'attr_1': '属性_1_1', 'attr_2': '属性_1_2' } ]
2 截图
3 源代码
<template>
<div class="combine_cell">
<div class="cc_con">
<el-table
v-bind:data="dataArr">
<el-table-column
v-for="(attr, index) in newAttrArr"
v-bind:key="index"
v-bind:prop="attr.enTitle"
v-bind:label="attr.chTitle">
</el-table-column>
</el-table>
</div>
</div>
</template>
<script>
export default {
name: 'CombineMultiAttr',
data(){
return{
dataArr: new Array(),
attrArr: new Array()
}
},
created(){
let attrLen = 4;
for(let i=0; i<attrLen; i++){
this.attrArr.push({
enTitle:'attr_'+i,
chTitle:'属性_'+i,
isShow:true
});
// 不显示第一列
if(i==0){
this.attrArr[i].isShow = false;
}
}
for(let i=0; i<4; i++){
let item = new Object();
for(let j=0; j<attrLen; j++){
item[this.attrArr[j].enTitle]=(this.attrArr[j].chTitle)+'_'+i;
}
this.dataArr.push(item);
}
},
computed:{
newAttrArr: function(){
return this.attrArr.filter(item=>{
return item.isShow;
})
}
},
methods:{
}
}
</script>
<style scoped>
</style>