成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

基于vue.js實(shí)現(xiàn)樹形表格的封裝

yedf / 2398人閱讀

摘要:此頁面是實(shí)現(xiàn)樹表格的關(guān)健頁面。這里就是關(guān)健點(diǎn),因?yàn)檫@個(gè)子組件是需要遞歸實(shí)現(xiàn),所以,需要?jiǎng)討B(tài)注冊(cè)到當(dāng)前組件中。補(bǔ)充一點(diǎn)不要只看部分,部分才是這個(gè)樹表格的關(guān)健所在。

基于vue.js實(shí)現(xiàn)樹形表格的封裝(vue-tree-table) 前言
由于公司產(chǎn)品(基于vue.js)需要,要實(shí)現(xiàn)一個(gè)樹形表格的功能,百度、google找了一通,并沒有發(fā)現(xiàn)很靠譜的,也不是很靈活。所以就用vue自己擼了一個(gè),還望大家多多指教。
主要技術(shù)點(diǎn):vue子組件的遞歸實(shí)現(xiàn)及相關(guān)樣式的實(shí)現(xiàn) 樹形表格實(shí)現(xiàn)

效果圖(Demo)

主要代碼

index.vue頁面實(shí)現(xiàn)業(yè)務(wù)邏輯代碼,比如樹表格上面的一些操作按鈕的實(shí)現(xiàn)及數(shù)據(jù)獲取。

原始數(shù)據(jù)`list`:是不包含子數(shù)據(jù)的數(shù)據(jù)結(jié)構(gòu),即沒有層級(jí)結(jié)構(gòu),例如:
[{id:111,parentId:0,name:"父及"},{id:111,parentId:111,name:"子級(jí)"}...],通過parentId來獲取對(duì)應(yīng)父子層級(jí)結(jié)構(gòu)
`treeDataSource`:是樹表格需要的數(shù)據(jù)結(jié)構(gòu),例如:
[{id:0,name:"父及",children:[{id:10,name:"子級(jí)",children:[]}]},...]
如果后臺(tái)返回給你的是原始數(shù)據(jù)格式,就可以用下面方法封裝成樹表格可以使用的數(shù)據(jù)結(jié)構(gòu):
    getTreeData() {
      // 取父節(jié)點(diǎn)
      let parentArr = this.list.filter(l => l.parentId === 0)
      this.treeDataSource = this.getTreeData(this.list, parentArr)
    },
    // 這里處理沒有children結(jié)構(gòu)的數(shù)據(jù)
    getTreeData(list, dataArr) {
      dataArr.map((pNode, i) => {
        let childObj = []
        list.map((cNode, j) => {
          if (pNode.Id === cNode.parentId) {
            childObj.push(cNode)
          }
        })
        pNode.children = childObj
        if (childObj.length > 0) {
          this.getTreeData(list, childObj)
        }
      })
      return dataArr
    }
tree-table.vue頁面。此頁面是實(shí)現(xiàn)樹表格的關(guān)健頁面。主要代碼如下:

首先這里的子組件tree-item沒有在頁面上有引入,但是也可以正常使用。這里就是關(guān)健點(diǎn),因?yàn)檫@個(gè)子組件是需要遞歸實(shí)現(xiàn),所以,需要?jiǎng)討B(tài)注冊(cè)到當(dāng)前組件中。代碼如下(由于代碼太多,先貼圖說明吧,點(diǎn)擊這里可以看源碼):

這里子組件看起來是不是挺奇怪的,但是為了遞歸他本身,暫時(shí)也只想到這種辦法。如果有更好的辦法,歡迎留言指正。

那么,樹表格的結(jié)構(gòu)實(shí)現(xiàn)在哪里呢??對(duì),就是在子組件的模版(template)里面,這里就不貼代碼了,可以移步到源碼查看。

感謝

收到favourli的指正,現(xiàn)已將原有寫法更新,采用遞歸組件來實(shí)現(xiàn),這樣頁面看起來就更清晰。
    components: {
            treeItem: () => import("./tree-item.vue")
    }
補(bǔ)充一點(diǎn):不要只看js部分,css部分才是這個(gè)樹表格的關(guān)健所在。當(dāng)然里面我采用了大量的計(jì)算屬性去判斷各種樣式的展示,還有一種方法,就是在initTreeData方法里面去實(shí)現(xiàn),這個(gè)方法就是處理或添加一些我們樹表格所使用的信息。比如我現(xiàn)在在里面實(shí)現(xiàn)的層級(jí)線的偏移量m.bLeft = level === 1 ? 34 : (level - 2) * 16 + 34 這個(gè)計(jì)算如果沒有看明白,可以留言。

最后,此篇乃我的開篇之作,如有問題,還請(qǐng)多多包含,多多指教?。?!順便給我好久沒有更新的博客打個(gè)廣告,
歡迎點(diǎn)擊(一座城池

源碼地址github,歡迎star。

參考資源隔壁家的老黃

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108125.html

相關(guān)文章

  • 輕松實(shí)現(xiàn)可擴(kuò)展樹形表格

    摘要:由于目前還未開發(fā)樹形表格組件,也參閱了網(wǎng)絡(luò)上部分基于表格封裝的開源樹形組件,都沒有找的太理想可進(jìn)行二次開發(fā)的開源項(xiàng)目,所以就萌生了自行開發(fā)樹形表格。 由于ElementUI目前還未開發(fā)樹形表格組件,也參閱了網(wǎng)絡(luò)上部分基于ElementUI表格封裝的開源樹形組件,都沒有找的太理想可進(jìn)行二次開發(fā)的開源項(xiàng)目,所以就萌生了自行開發(fā)樹形表格。 本示例提供開發(fā)思路,移除了多余的樣式,比較適合新手入...

    harryhappy 評(píng)論0 收藏0
  • Vue項(xiàng)目總結(jié)】基于餓了么組件封裝

    摘要:項(xiàng)目中,組件是項(xiàng)目的基石,每個(gè)頁面都是組件來組裝起來,我司沒有自己的組件庫,選用的是組件庫,在它的基礎(chǔ)上再次封裝。部分代碼三級(jí)效果如下總結(jié)組件是項(xiàng)目的積木條,公用組件的封裝成功與否其實(shí)是對(duì)項(xiàng)目的開發(fā)效率有直接影響。 vue項(xiàng)目中,組件是項(xiàng)目的基石,每個(gè)頁面都是組件來組裝起來,我司沒有自己的組件庫,選用的是ElementUI組件庫,在它的基礎(chǔ)上再次封裝。 可編輯表格 由于是后臺(tái)管理項(xiàng)目,...

    YPHP 評(píng)論0 收藏0
  • VUE+element三級(jí)聯(lián)動(dòng)或樹形菜單獲取最后一項(xiàng),并加入到表格

    摘要:如下圖要實(shí)現(xiàn)的功能如下勾選三級(jí)聯(lián)動(dòng)的材料勾選最后一級(jí)的材料把勾選的材料信息動(dòng)態(tài)添加到下面表格中數(shù)據(jù)三級(jí)聯(lián)動(dòng)數(shù)據(jù)材料鍵值對(duì)選中的材料從后臺(tái)獲取三級(jí)聯(lián)動(dòng)數(shù)據(jù)調(diào)用封裝的函數(shù)把最后一項(xiàng)添加到函數(shù)中獲取最后一級(jí)材料函數(shù)遍歷材料樹如果有下級(jí)材料就一直 如下圖,要實(shí)現(xiàn)的功能如下,勾選三級(jí)聯(lián)動(dòng)的材料,勾選最后一級(jí)的材料,把勾選的材料信息動(dòng)態(tài)添加到下面表格中showImg(https://segment...

    yeyan1996 評(píng)論0 收藏0
  • 安利一款基于element大數(shù)據(jù)樹形表格

    摘要:項(xiàng)目介紹一款基于改寫的支持樹形表格的大數(shù)據(jù)表格組件直接懟地址看看前端的小伙伴能不能給顆星呢,哈哈,歡迎提交和各種建議,討論 項(xiàng)目介紹 一款基于element-ui(2.9.1)改寫的支持樹形表格的大數(shù)據(jù)表格組件 ?? 直接懟地址 github: https://github.com/Spdino/vbt... 看看前端的小伙伴能不能給顆星呢, 哈哈,歡迎提交BUG和各種建議,討論···...

    BigNerdCoding 評(píng)論0 收藏0
  • D2 Crud,一款簡(jiǎn)單易用表格組件

    摘要:是一套基于和的表格組件。將的功能進(jìn)行了封裝,并增加了表格的增刪改查數(shù)據(jù)校驗(yàn)表格內(nèi)編輯等常用的功能。大部分功能可由配置實(shí)現(xiàn),在實(shí)現(xiàn)并擴(kuò)展了表格組件功能的同時(shí),降低了開發(fā)難度,減少了代碼量,大大簡(jiǎn)化了開發(fā)流程。 D2-Crud 是一套基于Vue.js 2.2.0+ 和 Element UI 2.0.0+ 的表格組件。D2-Crud 將 Element 的功能進(jìn)行了封裝,并增加了表格的增刪改...

    fevin 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<