vue递归怎样实现表格一级数据和二级显示相同
Admin 2022-09-07 群英技术资讯 1087 次浏览
很多朋友都对“vue递归怎样实现表格一级数据和二级显示相同”的内容比较感兴趣,对此小编整理了相关的知识分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获,那么感兴趣的朋友就继续往下看吧!说明: el-table有一个表格一级数据和二级数据显示的是一样的,像这种就可以用递归实现。
数据结构是这样子的:
tableData:[{
name: "Lucy",
age: 18,
mobile: "11111111111",
type: 1,
friends:[{
name: "Lucy-friend1",
age: 16,
mobile: "11111111111"
},{
name: "Lucy-friend2",
age: 16,
mobile: "11111111111"
}]
}]
像以上这种数据结构想要如下图一样显示:

我用的是el-table组件,所以单独建了一个组件用于表格递归显示。regionTableTemplate里expend中用到的递归显示二级数据
代码如下:
<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="手机号"></el-table-column>
<el-table-column label="操作" width="220">
<template slot-scope="scope">
<el-button type="text">详情</el-button>
<el-button type="text"> 创建可用区</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:{
//展开行 用于没有friends数组即没有子数据
isShowExpend(row, index) {
if (row.row.friends&&row.row.friends) {
return ''
} else {
return 'hide-expand'
}
}
}
}
</script>
<style>
</style>
父组件调用
<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: {//分页
showItem: 15,
total: 0,
currentPage: 1
},
}
},
methods: {
//分页
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>
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
现在很多登录注册操作都需要输入验证码,而vue中验证码组件很实用,对此这篇文章就主要给大家分享vue验证码组件的使用,下文有示例供大家参考,感兴趣的朋友可以了解看看。
数组的去重方法,其实无论实在实际项目还是在面试中都会有用到的,下面这篇文章主要给大家介绍了非常全面的12种js数组去重的方法,文中通过示例代码介绍的非常详细,需要的朋友可以参考下
这篇文章给大家分享一个jQuery相关示例,需求是判断点击了哪个li,这里使用到的方法index()方法,文中示例代码有一定的参考价值,感兴趣的朋友可以了解看看,下面我们一起来学习一下jQuery中判断点击哪个li的方法。
这篇文章主要介绍了 quickjs 封装 JavaScript 沙箱,在前文 JavaScript 沙箱探索 中声明了沙箱的接口,并且给出了一些简单的执行任意第三方 js 脚本的代码,但并未实现完整的 IJavaScriptShadowbox,下面便讲一下如何基于 quickjs 实现,需要的朋友可以参考一下
这篇文章主要讲解JavaScript严格模式不支持八进制的问题,本文围绕JavaScript严格模式展开内容,详细介绍为什么JavaScript严格模式不支持八进制,下面来看看详细介绍,需要的朋友可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册关注或联系群英网络
7x24小时售前:400-678-4567
7x24小时售后:0668-2555666
24小时QQ客服
群英微信公众号
CNNIC域名投诉举报处理平台
服务电话:010-58813000
服务邮箱:service@cnnic.cn
投诉与建议:0668-2555555
Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008