vue+element表格實(shí)現(xiàn)多層數(shù)據(jù)的嵌套方式
vue+element表格實(shí)現(xiàn)多層數(shù)據(jù)嵌套
今天用element的表格渲染了商城的購(gòu)物車列表,element的表格之前也用到過(guò),它把所有的東西都封裝好了,
這是完成之后的
只需要往里面?zhèn)鲾?shù)據(jù)就可以了,通過(guò)prop來(lái)拿到相對(duì)應(yīng)的字段,非常方便,但是天不盡人愿吶,后臺(tái)接口返回的數(shù)據(jù)
是嵌套多了一層,直接上圖,后臺(tái)返回的數(shù)據(jù)結(jié)構(gòu)
data下面是店鋪的名字和id,orderItemList是店鋪下面的商品,店鋪要顯示,商品更要顯示,(難受)
這nm嵌套兩層,表格拿不出來(lái)啊,于是各種想思路,什么里邊再套一個(gè)表格,這樣會(huì)出現(xiàn)空表頭,也從網(wǎng)上找了很多方法,都是差強(qiáng)人意,決心還是要自己解決,當(dāng)我研究了element的表格之后,發(fā)現(xiàn)一個(gè)叫樹形數(shù)據(jù),見下圖
我可以把店鋪名字放到尖括號(hào)展開啊,再把店鋪下的orderItemList放到尖括號(hào)展開下 (我這無(wú)處安放的才華)。
我研究了樹形表格之后,發(fā)現(xiàn)無(wú)論是展開還是折疊,就拿上圖為例,他的日期的字段必須是一樣的,包括姓名地址也必須是一樣的,但是看我的返回的數(shù)據(jù)不一樣啊,那就要想辦法,于是我就循環(huán)了接口返回的數(shù)據(jù),代碼如下
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 }) }
按照我需要的字段來(lái)進(jìn)行push,在每次循環(huán)之前要把tableData清空掉,不然你曉得,當(dāng)然你也可以讓后臺(tái)把接口里的字段改掉,我這里后臺(tái)也是拿的別人的改不掉,只能自己想辦法,
樹形數(shù)據(jù)接收一個(gè):
tree-props="{children: ‘children',hasChildren: ‘hasChildren'}"
這里的children是展開下的數(shù)據(jù),這個(gè)字段是不是children都可以,說(shuō)的是引號(hào)里的啊,外邊的必須是children,hasChildren是 是否有這個(gè)展開下的數(shù)據(jù),
我這里沒有用到,當(dāng)然是用之后還是要做很多的判斷,因?yàn)槟愕牡赇伱忠彩且恍?,只顯示店鋪名字,我把我代碼貼出來(lái),看一下
這是表格結(jié)構(gòu)
<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='單價(jià)' prop="price"></el-table-column> <el-table-column label='數(shù)量' 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='小計(jì)' 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>
方法
我這里用到了多選框勾選商品,當(dāng)el-table-column的type為selection時(shí)接受一個(gè)方法為selectable,決定誰(shuí)可以被選擇,我這里是只有商品才能被勾選,所以店鋪就給false掉了。
我把表頭的那個(gè)總選框返回一個(gè)class名給隱藏了,最好用visibility: hidden;隱藏,它是占位隱藏,為什么給隱藏,是因?yàn)楣催x了表頭的總選框只能勾選到店鋪,而商品勾選不到,研究了好久也沒有發(fā)現(xiàn),需求也不怎么需要,我就給隱藏了
handleCheckbox(row,index){ if(!row.children){ return true } }, handleHead(row){ if(row.columnIndex === 0){ return 'check-head' } },
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
- el-element中el-table表格嵌套el-select實(shí)現(xiàn)動(dòng)態(tài)選擇對(duì)應(yīng)值功能
- Vue?elementUI表單嵌套表格并對(duì)每行進(jìn)行校驗(yàn)詳解
- Element實(shí)現(xiàn)表格嵌套、多個(gè)表格共用一個(gè)表頭的方法
- 關(guān)于ElementPlus中的表單驗(yàn)證規(guī)則詳解
- ElementUI表單驗(yàn)證validate和validateField的使用及區(qū)別
- element表單驗(yàn)證如何清除校驗(yàn)提示語(yǔ)
- 解決vue+ element ui 表單驗(yàn)證有值但驗(yàn)證失敗問題
- element 表格嵌套表單驗(yàn)證指定行的操作方法
相關(guān)文章
vue打包相關(guān)細(xì)節(jié)整理(小結(jié))
這篇文章主要介紹了vue打包相關(guān)細(xì)節(jié)整理(小結(jié)),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-09-09vue3+vite使用環(huán)境變量.env的一些配置情況詳細(xì)說(shuō)明
開發(fā)中經(jīng)常會(huì)使用環(huán)境變量,Vite相比于Webpack也有一定的變化,下面這篇文章主要給大家介紹了關(guān)于vue3+vite使用環(huán)境變量.env的一些配置情況說(shuō)明的相關(guān)資料,需要的朋友可以參考下2022-12-12淺談vue獲得后臺(tái)數(shù)據(jù)無(wú)法顯示到table上面的坑
這篇文章主要介紹了淺談vue獲得后臺(tái)數(shù)據(jù)無(wú)法顯示到table上面的坑,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08vue粘貼復(fù)制功能的實(shí)現(xiàn)過(guò)程記錄
最近在項(xiàng)目中遇到點(diǎn)擊按鈕復(fù)制鏈接功能,所以這篇文章主要給大家介紹了關(guān)于vue粘貼復(fù)制功能的實(shí)現(xiàn)過(guò)程,文中通過(guò)示例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-03-03vue router-link傳參以及參數(shù)的使用實(shí)例
下面小編就為大家?guī)?lái)一篇vue router-link傳參以及參數(shù)的使用實(shí)例。小編覺得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-11-11vue實(shí)現(xiàn)的網(wǎng)易云音樂在線播放和下載功能案例
這篇文章主要介紹了vue實(shí)現(xiàn)的網(wǎng)易云音樂在線播放和下載功能,結(jié)合具體實(shí)例形式分析了網(wǎng)易云音樂相關(guān)接口調(diào)用與操作技巧,需要的朋友可以參考下2019-02-02vue+highCharts實(shí)現(xiàn)可選范圍的圖表
這篇文章主要為大家詳細(xì)介紹了vue+highCharts實(shí)現(xiàn)可選范圍的圖表,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2022-03-03Vite創(chuàng)建項(xiàng)目的實(shí)現(xiàn)步驟
隨著 Vite2 的發(fā)布并日趨穩(wěn)定,現(xiàn)在越來(lái)越多的項(xiàng)目開始嘗試使用它。本文我們就介紹了Vite創(chuàng)建項(xiàng)目的實(shí)現(xiàn)步驟,感興趣的可以了解一下2021-07-07