vue+Element-ui的el-table的多級(jí)內(nèi)容渲染問題
vue+Element-ui的el-table的多級(jí)內(nèi)容渲染
將多層內(nèi)容渲染到表格里面
平常的表格是一個(gè)對(duì)象里面的數(shù)據(jù)渲染成一行,對(duì)象里面的key就是表格的label,如果對(duì)象里面還有對(duì)象數(shù)組那該怎么去渲染,如渲染下面的數(shù)據(jù),將一個(gè)對(duì)象渲染成一行數(shù)據(jù),和平常的table表格的數(shù)據(jù)渲染不一樣,這個(gè)不能直接渲染出來,需要加第三方的label來渲染數(shù)據(jù)
tableData: [
{
name: 'Huawei P40',
properties: [
{
description: '顏色',
value: '紅色'
},
{
description: '內(nèi)存',
value: '128G'
}
]
},
{
name: '小米10',
properties: [
{
description: '顏色',
value: '黑色'
},
{
description: '內(nèi)存',
value: '128G'
}
]
}
]
代碼如下,另外加一個(gè)columnIndex數(shù)組,用來存儲(chǔ)數(shù)據(jù)里面的屬性的key
<template>
<el-table :data="tableData" border>
<el-table-column label="手機(jī)">
<template slot-scope="scope">
<span>{{scope.row.name}}</span>
</template>
</el-table-column>
<el-table-column v-for="(item, index) in columnIndex" :key="index" :label="item">
<template slot-scope="scope">
<span>{{scope.row.properties[index].value}}</span>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
data() {
return {
// 有兩層數(shù)據(jù),渲染表格
columnIndex: ['顏色','內(nèi)存'],
tableData: [
{
name: 'Huawei P40',
properties: [
{
description: '顏色',
value: '紅色'
},
{
description: '內(nèi)存',
value: '128G'
}
]
},
{
name: '小米10',
properties: [
{
description: '顏色',
value: '黑色'
},
{
description: '內(nèi)存',
value: '128G'
}
]
}
]
}
}
}
</script>
<style>
</style>
效果圖:
可以看到,properties里面的數(shù)據(jù)也渲染到表格里面了

Element UI 多級(jí)表格渲染
// TableColumn.js
function renderColumn(h, column){
return h{
'el-table-column',
{
props:{
align:'center',
...column
}
},
column&&column.children&&column.children.map(c=> renderColumn(h, c))
}
}
export default {
functional: true,
props: {
columns: {
type:Array,
default: ()=>[]
}
},
render(h, ctx) {
return ctx.props.columns.map(column => renderColumn(h, column ))
}
}// Table.vue
<template>
<el-table
ref="elTable"
:data="list"
stripe
border
height="100%"
>
</el-table>
</template>
<script>
import TableColumn from './TableColumn.js'
const columns = [
{
label:'一級(jí)',
children:[
{
label:'二級(jí)一',
align:'center',
prop:'name1'
},
{
label:'二級(jí)二',
children:[
{
label:'三級(jí)一',
align:'center',
prop:'name2'
},
{
label:'三級(jí)二',
align:'center',
prop:'name3'
}
]
}
]
}
]
export default {
name: "Table",
data() {
return {
list:[]
}
}
}
</script>總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Vue3實(shí)現(xiàn)一個(gè)可左右滑動(dòng)操作組件的示例代碼
這篇文章主要為大家詳細(xì)介紹了如何利用Vue3實(shí)現(xiàn)一個(gè)可左右滑動(dòng)操作組件,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Vue有一定幫助,感興趣的可以學(xué)一下2022-11-11
vue項(xiàng)目中導(dǎo)入swiper插件的方法
這篇文章主要介紹了vue項(xiàng)目中導(dǎo)入swiper插件的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧2018-01-01
一文搞懂Vue3中toRef和toRefs函數(shù)的使用
這篇文章主要為大家介紹了Vue3中toRef和toRefs函數(shù)的使用方法,文中通過示例為大家進(jìn)行了詳細(xì)的講解,感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)一下2022-07-07
詳解利用 Vue.js 實(shí)現(xiàn)前后端分離的RBAC角色權(quán)限管理
本篇文章主要介紹了利用 Vue.js 實(shí)現(xiàn)前后端分離的RBAC角色權(quán)限管理,非常具有實(shí)用價(jià)值,需要的朋友可以參考下2017-09-09
vue3.0引入百度地圖并標(biāo)記點(diǎn)的實(shí)現(xiàn)代碼
這篇文章主要介紹了vue3.0引入百度地圖并標(biāo)記點(diǎn),本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2022-08-08
Vuex中actions優(yōu)雅處理接口請(qǐng)求的方法
在項(xiàng)目開發(fā)中,如果使用到了 vuex,通常我會(huì)將所有的接口請(qǐng)求單獨(dú)用一個(gè)文件管理,這篇文章主要介紹了Vuex中actions如何優(yōu)雅處理接口請(qǐng)求,業(yè)務(wù)邏輯寫在 actions 中,本文給大家分享完整流程需要的朋友可以參考下2022-11-11
Vue中的watch是什么以及watch和computed的區(qū)別
這篇文章主要介紹了Vue中的watch是什么以及watch和computed的區(qū)別說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-06-06

