您现在的位置是:网站首页> 编程资料编程资料
vue+element表格实现多层数据的嵌套方式_vue.js_
                    
                
                2023-05-24
                317人已围观
            
简介 vue+element表格实现多层数据的嵌套方式_vue.js_
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是 是否有这个展开下的数据,
我这里没有用到,当然是用之后还是要做很多的判断,因为你的店铺名字也是一行,只显示店铺名字,我把我代码贴出来,看一下
这是表格结构
{{scope.row.title}}
-{{scope.row.num}}+  删除移入收藏夹
方法
我这里用到了多选框勾选商品,当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' } }, 以上为个人经验,希望能给大家一个参考,也希望大家多多支持。
相关内容
- vue中使用路由改浏览器标题和图标_vue.js_
 - Vue路由传参详细介绍_vue.js_
 - Jeeplus-vue 实现文件的上传功能_vue.js_
 - vue3.0如何修改浏览器标题(静态)_vue.js_
 - js拼接字符串时如何在中间加上空格_javascript技巧_
 - vue中$router.back()和$router.go()的用法_vue.js_
 - vue项目如何使用$router.go(-1)返回时刷新原来的界面_vue.js_
 - vue路径写法之关于./和@/的区别_vue.js_
 - vue如何使用window.open打开页面并拼接参数_vue.js_
 - 小程序拖动区域实现排序效果_javascript技巧_
 
                                
                                                        
                                
                                                        
                                
                                                        
    