vue+element表格实现多层数据的嵌套方式
作者:白佯们班的小莫 发布时间:2024-05-28 16:10:56
vue+element表格实现多层数据嵌套
今天用element的表格渲染了商城的购物车列表,element的表格之前也用到过,它把所有的东西都封装好了,
这是完成之后的
只需要往里面传数据就可以了,通过prop来拿到相对应的字段,非常方便,但是天不尽人愿呐,后台接口返回的数据  
是嵌套多了一层,直接上图,后台返回的数据结构
data下面是店铺的名字和id,orderItemList是店铺下面的商品,店铺要显示,商品更要显示,(难受)
这nm嵌套两层,表格拿不出来啊,于是各种想思路,什么里边再套一个表格,这样会出现空表头,也从网上找了很多方法,都是差强人意,决心还是要自己解决,当我研究了element的表格之后,发现一个叫树形数据,见下图
我可以把店铺名字放到尖括号展开啊,再把店铺下的orderItemList放到尖括号展开下 (我这无处安放的才华)。  
我研究了树形表格之后,发现无论是展开还是折叠,就拿上图为例,他的日期的字段必须是一样的,包括姓名地址也必须是一样的,但是看我的返回的数据不一样啊,那就要想办法,于是我就循环了接口返回的数据,代码如下
for(let i = 0; i < res.data.data.length; i++){
this.tableData.push({
'goodsId':i,
'title':res.data.data[i].sellerName,
'children':res.data.data[i].orderItemList
})
}
按照我需要的字段来进行push,在每次循环之前要把tableData清空掉,不然你晓得,当然你也可以让后台把接口里的字段改掉,我这里后台也是拿的别人的改不掉,只能自己想办法,  
树形数据接收一个:
tree-props="{children: ‘children',hasChildren: ‘hasChildren'}"
这里的children是展开下的数据,这个字段是不是children都可以,说的是引号里的啊,外边的必须是children,hasChildren是 是否有这个展开下的数据,
我这里没有用到,当然是用之后还是要做很多的判断,因为你的店铺名字也是一行,只显示店铺名字,我把我代码贴出来,看一下
这是表格结构
<el-table
:data="tableData"
style="width: 90%;"
row-key="goodsId"
default-expand-all
:header-cell-class-name='handleHead'
@selection-change="handleSelectionChange"
:tree-props="{children: 'children',hasChildren: 'hasChildren'}"
>
<el-table-column
width="55"
type="selection"
:selectable='handleCheckbox'
>
</el-table-column>
<el-table-column show-overflow-tooltip width="400" label='商品'>
<template slot-scope="scope">
<div style="display:inline-block;">
<img v-if="scope.row.picPath" class="shops-img" :src="scope.row.picPath" alt="">
<span>{{scope.row.title}}</span>
</div>
</template>
</el-table-column>
<el-table-column label='单价' prop="price"></el-table-column>
<el-table-column label='数量' prop="num">
<template v-if="scope.row.num" slot-scope="scope">
<span @click="shopsNumDown(scope.row.itemId)" class="shops-num-btn curpor">-</span>
<span class="shops-num">{{scope.row.num}}</span>
<span @click="shopsNumUp(scope.row.itemId)" class="shops-num-btn curpor">+</span>
</template>
</el-table-column>
<el-table-column label='小计' prop="totalFee"></el-table-column>
<el-table-column label='操作'>
<template v-if="scope.row.price" slot-scope="scope">
<div class="curpor handle-txt" @click="deleteShops(scope.row.itemId)">
删除
</div>
<div class="curpor handle-txt" @click="addCollection(scope.row.goodsId)">
移入收藏夹
</div>
</template>
</el-table-column>
</el-table>
方法  
我这里用到了多选框勾选商品,当el-table-column的type为selection时接受一个方法为selectable,决定谁可以被选择,我这里是只有商品才能被勾选,所以店铺就给false掉了。  
我把表头的那个总选框返回一个class名给隐藏了,最好用visibility: hidden;隐藏,它是占位隐藏,为什么给隐藏,是因为勾选了表头的总选框只能勾选到店铺,而商品勾选不到,研究了好久也没有发现,需求也不怎么需要,我就给隐藏了
handleCheckbox(row,index){
if(!row.children){
return true
}
},
handleHead(row){
if(row.columnIndex === 0){
return 'check-head'
}
},
以上为个人经验,希望能给大家一个参考,也希望大家多多支持asp之家。
来源:https://blog.csdn.net/qq_45420884/article/details/106906347
![](https://www.aspxhome.com/images/zang.png)
![](https://www.aspxhome.com/images/jiucuo.png)
猜你喜欢
- 一.页面样式二.数据库 三.前端页面代码 <template> <el-tree :props="pr
- 一、什么是frame&frame切换?frame:HTML页面中的一种框架,主要作用是在当前页面中指定区域显示另一页面元素;fram
- 一、不要使用可变对象作为函数默认值In [1]: def append_to_list(value, def_list=[]):
- 一、前言Python语言近年来人气爆棚。它广泛应用于数据科学,人工智能,以及网络安全问题中,由于代码可读性较强,学习效率较高,吸引了许多非科
- 1 写在前面1. 本文介绍的是基于TensorFlow tf.estimator接口的深度学习网络,而非TensorFlow&nb
- JavaScript: <script type="text/javascript"> var level1
- 本文实例讲述了Python正则表达式实现截取成对括号的方法。分享给大家供大家参考,具体如下:strs = '1(2(3(4(5(67
- 等间距取值a = np.linspace(float(-pi), float(pi), 100)从-pi到pi取100个值对区间进行等间距取
- 目录实现思路使用BackgroundSubtractorMOG2进行背景分割使用人像识别填充面部信息使用形态学填充分割出来的前景将人像与目标
- BeautifulSoup是Python的一个第三方库,可用于帮助解析html/XML等内容,以抓取特定的网页信息。目前最新的是
- 市场上很多火车票抢票软件大家应该非常熟悉,但很少有人研究具体是怎么实现的,所以觉得很神秘,其实很简单。下面使用Python模拟抢票程序,给大
- 1、使用索引来更快地遍历表。缺省情况下建立的索引是非群集索引,但有时它并不是最佳的。在非群集索引下,数据在物理上随机存放在数据页上。合理的索
- pytorch中index_select()的用法index_select(input, dim, index)功能:在指定的维度dim上选
- 在图像分割领域,一个重要任务便是分割出感兴趣(ROI)区域。如果是简易的矩形ROI区域其实是非常容易分割的,opencv的官方python教
- 今天是边复习边创作博客的第三天,我今年大二,我们专业开的有这门课程,因为喜欢所以更加认真学习,本以为没人看呢,看了后台浏览量让我更加认真创作
- 使用环境 C#VSCodeM11. 安装MySQL下载MySQL软件,傻瓜式安装即可,安装完之后,在系统偏好号设置里会出现一个My
- 1. 打开FrontPage 2003,点击“文件→新建→新建网站→其他网站模板”,然后选择“数据库界面向导”,给定网站路径后,单击[确定]
- 各位工程师累了吗? 推荐一篇可以让你技术能力达到出神入化的网站"持久男"1.二维绘图a. 一维数据集用 Numpy nd
- 一、CrawlSpider类介绍1.1 引入使用scrapy框架进行全站数据爬取可以基于Spider类,也可以使用接下来用到的CrawlSp
- 一、实验目的熟练掌握pandas中的groupby操作二、实验原理groupby(by=None, axis=0, level=None,