2018-12-21element-UI實(shí)現(xiàn)樹形圖

image.png

最近接到需求把兩個(gè)關(guān)聯(lián)的表格整改成樹形結(jié)構(gòu)圖,如上圖所示。
需要滿足的要求:
1.勾選父級(jí),子集不勾選。
2.子集顯示默認(rèn)勾選并且禁用。
實(shí)現(xiàn):
使用以下屬性實(shí)現(xiàn)父與子的不緊密關(guān)聯(lián)
[圖片上傳中...(image.png-76e812-1545370805016-0)]
默認(rèn)勾選使用配合使用 node-key="id"


image.png

其中的id可以任意改變,可以換成任意唯一標(biāo)識(shí)即可。
實(shí)現(xiàn)過程中遇到的問題,如何獲取當(dāng)前選中的數(shù)據(jù)


image.png

因?yàn)橛羞x項(xiàng)卡的關(guān)系,一開始我的想法是設(shè)置四個(gè)變量用于存放當(dāng)前選取的值,到最后發(fā)現(xiàn)并不需要,因?yàn)槲覀儾僮鞯亩际莟ree他只有一個(gè)data,不同于表格一個(gè)表格是一個(gè)數(shù)據(jù)‘庫’;所以我們只需要設(shè)置一個(gè)變量。
采用el-tree 的 check事件,獲取到當(dāng)前的勾選項(xiàng)
[圖片上傳中...(image.png-c70fb4-1545371649877-0)]
一開始我用了check事件中的第二個(gè)參數(shù) handleCheckChange(item,node),根據(jù)node. checkedNodes獲取到當(dāng)前所有被選中的,發(fā)現(xiàn)跟我想要的數(shù)據(jù)結(jié)構(gòu)有所出入,各種細(xì)節(jié)再次不再細(xì)說,經(jīng)過一番探討詢問,發(fā)現(xiàn)利用第一個(gè)參數(shù)item即可得到我想要的效果,我們需要做的就是把當(dāng)前選中的數(shù)據(jù)塞到裝載已勾選數(shù)據(jù)的容器中,判斷如果當(dāng)前是勾選狀態(tài)則this.checkedProduct.push(item);如果我要是取消勾選則判斷當(dāng)前未勾選,則
 this.checkedProduct.map((itemChecked,index)=>{
          if(item.productNo === itemChecked.productNo){
            this.checkedProduct.splice(index,1)
            return false;
          }

遍歷已經(jīng)勾選的數(shù)據(jù),如果當(dāng)前取消勾選的數(shù)據(jù)的產(chǎn)品號(hào)與選中的產(chǎn)品號(hào)一致,item.productNo === itemChecked.productNo,則去除數(shù)組中勾選的
this.checkedProduct.splice(index,1)即可實(shí)現(xiàn)。
問題2:實(shí)現(xiàn)父集與子集勾選不關(guān)聯(lián)時(shí),一開始判斷父級(jí)勾選時(shí)采用的是唯一標(biāo)識(shí)productNo而子集的數(shù)據(jù)中并沒有productNo可用于判斷,那怎么辦呢,我們可以在子集中添加一個(gè)productNo,但此時(shí)并不是把productNo真正的添加到子集中知識(shí)起了一個(gè)別名,在獲取數(shù)據(jù)時(shí),為子集的唯一標(biāo)識(shí)id起一個(gè)別名叫做productNo;

 res.items.forEach((row, index) => {
               row.products.map(item=>{
                 item.serviceItems.map(serviceItem=>{
                  serviceItem.disabled = true;
                  serviceItem.productNo = serviceItem.id;
                  this.selectionKey.push(serviceItem.id);
                 })
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • ORA-00001: 違反唯一約束條件 (.) 錯(cuò)誤說明:當(dāng)在唯一索引所對(duì)應(yīng)的列上鍵入重復(fù)值時(shí),會(huì)觸發(fā)此異常。 O...
    我想起個(gè)好名字閱讀 5,954評(píng)論 0 9
  • 關(guān)于Mongodb的全面總結(jié) MongoDB的內(nèi)部構(gòu)造《MongoDB The Definitive Guide》...
    中v中閱讀 32,289評(píng)論 2 89
  • 1、低聲說話。 2、多用肯定句,少用疑問句。 3、管理控制情緒,不發(fā)火,不說教,不嘮叨。 4、
    格格的歌閱讀 657評(píng)論 0 0
  • 當(dāng)大家看電影追劇時(shí),是看的高清還是標(biāo)清? 圖鴨君覺得只要網(wǎng)速夠得上的小伙伴應(yīng)該沒有人愿意再看標(biāo)清了吧!畢竟高清視頻...
    Tucodec圖鴨科技閱讀 931評(píng)論 0 0
  • 大廳玻璃門該朝哪開?這看似無關(guān)緊要的問題,其實(shí)并沒有那么簡(jiǎn)單。 兩旁側(cè)門,開而不啟。正門都打開,人員從正門出入。 ...
    李礦水閱讀 355評(píng)論 3 5

友情鏈接更多精彩內(nèi)容