最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue+element表格實(shí)現(xiàn)多層數(shù)據(jù)的嵌套方式

 更新時(shí)間:2022年09月10日 10:06:31   作者:白佯們班的小莫  
這篇文章主要介紹了vue+element表格實(shí)現(xiàn)多層數(shù)據(jù)的嵌套方式,具有很好的參考價(jià)值。希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

vue+element表格實(shí)現(xiàn)多層數(shù)據(jù)嵌套

今天用element的表格渲染了商城的購物車列表,element的表格之前也用到過,它把所有的東西都封裝好了,

這是完成之后的

  

只需要往里面?zhèn)鲾?shù)據(jù)就可以了,通過prop來拿到相對應(yīng)的字段,非常方便,但是天不盡人愿吶,后臺接口返回的數(shù)據(jù)  

是嵌套多了一層,直接上圖,后臺返回的數(shù)據(jù)結(jié)構(gòu)

  

data下面是店鋪的名字和id,orderItemList是店鋪下面的商品,店鋪要顯示,商品更要顯示,(難受)

這nm嵌套兩層,表格拿不出來啊,于是各種想思路,什么里邊再套一個(gè)表格,這樣會出現(xiàn)空表頭,也從網(wǎng)上找了很多方法,都是差強(qiáng)人意,決心還是要自己解決,當(dāng)我研究了element的表格之后,發(fā)現(xiàn)一個(gè)叫樹形數(shù)據(jù),見下圖

  

我可以把店鋪名字放到尖括號展開啊,再把店鋪下的orderItemList放到尖括號展開下 (我這無處安放的才華)。  

我研究了樹形表格之后,發(fā)現(xiàn)無論是展開還是折疊,就拿上圖為例,他的日期的字段必須是一樣的,包括姓名地址也必須是一樣的,但是看我的返回的數(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
    })
}

按照我需要的字段來進(jìn)行push,在每次循環(huán)之前要把tableData清空掉,不然你曉得,當(dāng)然你也可以讓后臺把接口里的字段改掉,我這里后臺也是拿的別人的改不掉,只能自己想辦法,  

樹形數(shù)據(jù)接收一個(gè):

tree-props="{children: ‘children',hasChildren: ‘hasChildren'}"

這里的children是展開下的數(shù)據(jù),這個(gè)字段是不是children都可以,說的是引號里的啊,外邊的必須是children,hasChildren是 是否有這個(gè)展開下的數(shù)據(jù),

我這里沒有用到,當(dāng)然是用之后還是要做很多的判斷,因?yàn)槟愕牡赇伱忠彩且恍?,只顯示店鋪名字,我把我代碼貼出來,看一下

這是表格結(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,決定誰可以被選擇,我這里是只有商品才能被勾選,所以店鋪就給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è)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 詳解Vue2中組件間通信的解決全方案

    詳解Vue2中組件間通信的解決全方案

    Vue中組件這個(gè)特性讓不少前端er非常喜歡,我自己也是其中之一,它讓前端的組件式開發(fā)更加合理和簡單。下面這篇文章主要給大家介紹了關(guān)于Vue2中組件間通信的解決全方案,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面來一起看看吧。
    2017-07-07
  • Vue金融數(shù)字格式化(并保留小數(shù))數(shù)字滾動效果實(shí)現(xiàn)

    Vue金融數(shù)字格式化(并保留小數(shù))數(shù)字滾動效果實(shí)現(xiàn)

    這篇文章主要介紹了Vue金融數(shù)字格式化(并保留小數(shù)) 數(shù)字滾動效果,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-04-04
  • Vue實(shí)現(xiàn)向PDF文件中添加二維碼

    Vue實(shí)現(xiàn)向PDF文件中添加二維碼

    這篇文章主要為大家詳細(xì)介紹了如何利用Vue實(shí)現(xiàn)向PDF文件中添加二維碼的功能,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-06-06
  • 詳談Vue.js框架下main.js,App.vue,page/index.vue之間的區(qū)別

    詳談Vue.js框架下main.js,App.vue,page/index.vue之間的區(qū)別

    這篇文章主要介紹了詳談Vue.js框架下main.js,App.vue,page/index.vue之間的區(qū)別,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue配置多頁面的實(shí)現(xiàn)方法

    vue配置多頁面的實(shí)現(xiàn)方法

    本篇文章主要介紹了vue配置多頁面的實(shí)現(xiàn)方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-05-05
  • vue封裝tabs組件案例詳解

    vue封裝tabs組件案例詳解

    這篇文章主要為大家詳細(xì)介紹了vue封裝tabs組件案例,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-03-03
  • 基于Vue的SPA動態(tài)修改頁面title的方法(推薦)

    基于Vue的SPA動態(tài)修改頁面title的方法(推薦)

    這篇文章主要介紹了基于Vue的SPA動態(tài)修改頁面title的方法,需要的朋友可以參考下
    2018-01-01
  • elementUI自定義上傳文件功能實(shí)現(xiàn)(前端后端超詳細(xì)過程)

    elementUI自定義上傳文件功能實(shí)現(xiàn)(前端后端超詳細(xì)過程)

    自定義上傳思路很簡單,下面這篇文章主要給大家介紹了關(guān)于elementUI自定義上傳文件功能實(shí)現(xiàn)(前端后端超詳細(xì)過程)的相關(guān)資料,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-11-11
  • 輕松學(xué)Vue組件之單文件組件

    輕松學(xué)Vue組件之單文件組件

    一個(gè)組件相當(dāng)于是一個(gè)小模塊,它是html、css與js的集合體,可以用于描述頁面中的某個(gè)結(jié)構(gòu)(模塊),下面這篇文章主要給大家介紹了關(guān)于輕松學(xué)Vue組件之單文件組件的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Vue組件庫發(fā)布到npm詳解

    Vue組件庫發(fā)布到npm詳解

    本片文章給大家詳細(xì)介紹了如何將Vue組件庫發(fā)布到npm的方法以及代碼示例分享,感興趣的朋友參考學(xué)習(xí)下。
    2018-02-02

最新評論

五大连池市| 连州市| 泸定县| 彰武县| 米泉市| 沈丘县| 孝义市| 云龙县| 陆丰市| 高陵县| 怀仁县| 东乌珠穆沁旗| 通州区| 安宁市| 北安市| 基隆市| 读书| 东丽区| 廉江市| 海门市| 乐山市| 德江县| 昌都县| 永州市| 潍坊市| 察雅县| 浑源县| 大石桥市| 赣榆县| 大足县| 黄陵县| 临高县| 南阳市| 阿勒泰市| 宁远县| 沂南县| 钦州市| 扎赉特旗| 乃东县| 美姑县| 商丘市|