vue el-table實(shí)現(xiàn)遞歸嵌套的示例代碼
說(shuō)明: el-table有一個(gè)表格一級(jí)數(shù)據(jù)和二級(jí)數(shù)據(jù)顯示的是一樣的,像這種就可以用遞歸實(shí)現(xiàn)。
數(shù)據(jù)結(jié)構(gòu)是這樣子的:
tableData:[{
name: "Lucy",
age: 18,
mobile: "11111111111",
type: 1,
friends:[{
name: "Lucy-friend1",
age: 16,
mobile: "11111111111"
},{
name: "Lucy-friend2",
age: 16,
mobile: "11111111111"
}]
}]
像以上這種數(shù)據(jù)結(jié)構(gòu)想要如下圖一樣顯示:

我用的是el-table組件,所以單獨(dú)建了一個(gè)組件用于表格遞歸顯示。regionTableTemplate里expend中用到的遞歸顯示二級(jí)數(shù)據(jù)
代碼如下:
<template>
<el-table :data="tableData" class="table-sub" ref="regionTable" :show-header="showHeader" :row-class-name="isShowExpend">
<el-table-column type="expand">
<template slot-scope="scope">
<template v-if="scope.row.friends">
<regionTableTemplate class="in-table" :tableData="scope.row.friends" :showHeader="false"></regionTableTemplate>
</template>
</template>
</el-table-column>
<el-table-column prop="name" label="姓名"></el-table-column>
<el-table-column prop="age" label="年齡"></el-table-column>
<el-table-column prop="mobile" label="手機(jī)號(hào)"></el-table-column>
<el-table-column label="操作" width="220">
<template slot-scope="scope">
<el-button type="text">詳情</el-button>
<el-button type="text"> 創(chuàng)建可用區(qū)</el-button>
<el-button :disabled="scope.row.type === 1?true:false" type="text">刪除</el-button>
</template>
</el-table-column>
</el-table>
</template>
<script>
export default {
name: "regionTableTemplate",
props:{
tableData: Array,
showHeader: Boolean
},
methods:{
//展開(kāi)行 用于沒(méi)有friends數(shù)組即沒(méi)有子數(shù)據(jù)
isShowExpend(row, index) {
if (row.row.friends&&row.row.friends) {
return ''
} else {
return 'hide-expand'
}
}
}
}
</script>
<style>
</style>
父組件調(diào)用
<template>
<div id="ops-region-wrapper">
<div class="ops-list-wrapper">
<table-vue :tableData="tableData" :showHeader="true" @showRegionFlag="showRegionFlag" @showDelDialog="showDelDialog"></table-vue>
<Pager :pages='pages' @changeCurrent='changeCurrent'></Pager>
</div>
</div>
</template>
<script>
import Pager from '@/components/Pager.vue';
import tableVue from './components/table.vue';
export default {
components:{
Pager,
tableVue
},
data() {
return {
tableData: [{
name: "Lucy",
age: 18,
mobile: "11111111111",
type: 1,
friends:[{
name: "Lucy-friend1",
age: 16,
mobile: "11111111111"
},{
name: "Lucy-friend2",
age: 16,
mobile: "11111111111"
}]
}],
pages: {//分頁(yè)
showItem: 15,
total: 0,
currentPage: 1
},
}
},
methods: {
//分頁(yè)
changeCurrent(val) {
this.pages.currentPage = val;
}
},
mounted() {
this.getList();
}
}
</script>
<style lang="scss">
#ops-region-wrapper{
.el-table {
margin-top: 15px;
tr .el-table__expanded-cell {
padding: 0;
border-bottom: none;
}
.el-table__expand-icon {
width: 18px;
height: 18px;
line-height: 16px;
background: rgba(54, 134, 255, 0.2);
color: #3686ff;
border: 1px solid #3686FF;
box-sizing: border-box;
border-radius: 50%;
transform: scale(0.8);
i {
font-weight: bold;
font-size: 12px;
left: 48%;
}
}
.el-table__expand-icon--expanded{
transform: rotate(90deg) scale(0.8);
}
.hide-expand .el-table__expand-column>.cell {
display: none;
}
}
.in-table{
&::before{
border: none;
}
margin: 0;
padding: 0;
.el-table__expand-column>.cell,.el-table__expanded-cell {
display: none;
}
}
.el-button--text {
margin: 0 20px 0 0;
@include pageFont(12px, #006EFF, 400, "PingFangSC-Regular, PingFang SC", 17px);
&.is-disabled{
color: #979797;
}
}
.is-click {
cursor: pointer;
text-decoration: underline;
text-decoration-color: #3686FF;
@include pageFont(12px, #3686FF, 400, "PingFangSC-Regular, PingFang SC", 17px);
}
}
</style>
到此這篇關(guān)于vue el-table實(shí)現(xiàn)遞歸嵌套的示例代碼的文章就介紹到這了,更多相關(guān)vue el-table遞歸嵌套內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
一篇文章教你實(shí)現(xiàn)VUE多個(gè)DIV,button綁定回車事件
這篇文章主要介紹了VUE多個(gè)DIV綁定回車事件,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2021-10-10
Vue3項(xiàng)目中優(yōu)雅實(shí)現(xiàn)微信授權(quán)登錄的方法
用戶在微信端中訪問(wèn)第三方網(wǎng)頁(yè),可以通過(guò)微信網(wǎng)頁(yè)授權(quán)機(jī)制獲取用戶的基本信息,進(jìn)而實(shí)現(xiàn)所需要的業(yè)務(wù)邏輯,這篇文章主要給大家介紹了關(guān)于Vue3項(xiàng)目中優(yōu)雅實(shí)現(xiàn)微信授權(quán)登錄的相關(guān)資料,需要的朋友可以參考下2021-09-09
vue-router動(dòng)態(tài)路由實(shí)現(xiàn)前端權(quán)限管理方式
這篇文章主要介紹了vue-router動(dòng)態(tài)路由實(shí)現(xiàn)前端權(quán)限管理方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
詳解Vue.js項(xiàng)目API、Router配置拆分實(shí)踐
這篇文章主要介紹了詳解Vue.js項(xiàng)目API、Router配置拆分實(shí)踐,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-03-03
vue+elementUI實(shí)現(xiàn)分頁(yè)效果
這篇文章主要為大家詳細(xì)介紹了vue+elementUI實(shí)現(xiàn)分頁(yè)效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-07-07
Vue項(xiàng)目開(kāi)發(fā)常見(jiàn)問(wèn)題和解決方案總結(jié)
這篇文章主要介紹了Vue項(xiàng)目開(kāi)發(fā)常見(jiàn)問(wèn)題和解決方案總結(jié),幫助大家更好的利用vue開(kāi)發(fā),感興趣的朋友可以了解下2020-09-09
vue實(shí)現(xiàn)動(dòng)態(tài)進(jìn)度條效果
這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)動(dòng)態(tài)進(jìn)度條效果,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09
vue項(xiàng)目中openlayers繪制行政區(qū)劃
這篇文章主要為大家詳細(xì)介紹了vue項(xiàng)目中openlayers繪制行政區(qū)劃,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-12-12
在vue中給后臺(tái)接口傳的值為數(shù)組的格式代碼
這篇文章主要介紹了在vue中給后臺(tái)接口傳的值為數(shù)組的格式代碼,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-11-11

