vue+Element-ui的el-table的多級(jí)內(nèi)容渲染問(wèn)題
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è)不能直接渲染出來(lái),需要加第三方的label來(lái)渲染數(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ù)組,用來(lái)存儲(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)文章
Composition API思想封裝NProgress示例詳解
這篇文章主要為大家介紹了Composition API思想封裝NProgress示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-08-08Vue開(kāi)發(fā)過(guò)程中遇到的疑惑知識(shí)點(diǎn)總結(jié)
vue是法語(yǔ)中視圖的意思,Vue.js是一個(gè)輕巧、高性能、可組件化的MVVM庫(kù),同時(shí)擁有非常容易上手的API。下面這篇文章主要給大家總結(jié)了Vue在開(kāi)發(fā)過(guò)程中遇到的疑惑知識(shí)點(diǎn),有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。2017-01-01element-vue實(shí)現(xiàn)網(wǎng)頁(yè)鎖屏功能(示例代碼)
這篇文章主要介紹了element-vue實(shí)現(xiàn)網(wǎng)頁(yè)鎖屏功能,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11使用Vue Router進(jìn)行路由組件傳參的實(shí)現(xiàn)方式
Vue Router 為 Vue.js 應(yīng)用提供了完整的路由解決方案,其中包括了組件間的數(shù)據(jù)傳遞功能,通過(guò)路由組件傳參,我們可以輕松地在導(dǎo)航到新頁(yè)面時(shí)傳遞必要的數(shù)據(jù),本文將深入探討如何使用 Vue Router 進(jìn)行路由組件間的傳參,并通過(guò)多個(gè)示例來(lái)展示其實(shí)現(xiàn)方式2024-09-09vue中如何使用embed標(biāo)簽PDF預(yù)覽
這篇文章主要介紹了vue中如何使用embed標(biāo)簽PDF預(yù)覽,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-05-05Vue創(chuàng)建淺層響應(yīng)式數(shù)據(jù)的實(shí)例詳解
這篇文章主要介紹了Vue創(chuàng)建淺層響應(yīng)式數(shù)據(jù)的實(shí)例,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友參考下吧2023-11-11vue項(xiàng)目開(kāi)啟gzip壓縮功能簡(jiǎn)單實(shí)例
這篇文章主要給大家介紹了關(guān)于vue項(xiàng)目開(kāi)啟gzip壓縮功能的相關(guān)資料,gizp壓縮是一種http請(qǐng)求優(yōu)化方式,通過(guò)減少文件體積來(lái)提高加載速度,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2023-07-07Vue安裝sass-loader和node-sass版本匹配的報(bào)錯(cuò)問(wèn)題
這篇文章主要介紹了Vue安裝sass-loader和node-sass版本匹配的報(bào)錯(cuò)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2024-04-04