鍍金池/ 問(wèn)答/HTML/ element UI 級(jí)聯(lián)選擇器默認(rèn)選中的值

element UI 級(jí)聯(lián)選擇器默認(rèn)選中的值

需要實(shí)現(xiàn)一個(gè)類(lèi)似于省市級(jí)聯(lián)的組件,取值為最后一級(jí)的code
但是在實(shí)現(xiàn)的時(shí)候發(fā)現(xiàn),elementui組件綁定的值類(lèi)型為array
目前創(chuàng)建的時(shí)候,并沒(méi)有什么問(wèn)題,我取值數(shù)組最后一個(gè)index就可以了

但是在修改的時(shí)候,無(wú)法實(shí)現(xiàn)默認(rèn)選擇
求問(wèn)如何不通過(guò)后端存貯array來(lái)實(shí)現(xiàn)級(jí)聯(lián)選擇的默認(rèn)選

回答
編輯回答
涼心人

element UI的Cascader級(jí)聯(lián)選擇器組件在編輯時(shí),
它需要一個(gè)數(shù)組值,而一般我們api給的數(shù)據(jù)是一個(gè)值。
所以?xún)蓚€(gè)解決方法:

  1. 說(shuō)服后臺(tái),讓后臺(tái)給arr。
  2. 自己根據(jù)給定的值獲取級(jí)聯(lián)關(guān)系arr。

剛好這兩天解決了這個(gè)問(wèn)題。
寫(xiě)了一個(gè)方法如下:


function getTreeDeepArr(key, treeData) {

    let arr = []; // 在遞歸時(shí)操作的數(shù)組
    let returnArr = []; // 存放結(jié)果的數(shù)組
    let depth = 0; // 定義全局層級(jí)
    // 定義遞歸函數(shù)
    function childrenEach(childrenData, depthN) {

        for (var j = 0; j < childrenData.length; j++) {

            depth = depthN; // 將執(zhí)行的層級(jí)賦值 到 全局層級(jí)

            arr[depthN] = (childrenData[j].id);
            
            if (childrenData[j].id == key) {

                // returnArr = arr; // 原寫(xiě)法不行, 因 此賦值存在指針關(guān)系
                returnArr = arr.slice(0, depthN+1); //將目前匹配的數(shù)組,截?cái)嗖⒈4娴浇Y(jié)果數(shù)組,
                break

            } else {

                if (childrenData[j].children) {

                    depth ++;
                    childrenEach(childrenData[j].children, depth);

                }
            }

        }
        return returnArr;
    }
    return childrenEach(treeData, depth);
}
// 結(jié)果:
// console.log(getTreeDeepArr(1, treeData)); // [1]
// console.log(getTreeDeepArr(3, treeData)); // [1, 3]
// console.log(getTreeDeepArr(5, treeData)); // [1, 4, 5]
var treeData = [{
    id: 1,
    children: [{
        id: 3
    },{
        id: 4,
        children: [{
            id: 5,
            children: [{
                id: 6
            },
            {
                id: 8
            }]
        }]
    },{
        id: 7
    },{
        id: 12,
        children: [{
            id: 13
        }]
    }]
},{
    id: 2,
    children: [{
        id: 9,
        children: [{
            id: 10
        }]
    }]
},{
    id: 11
}];

// 結(jié)構(gòu):
// 
//   1 --- 3
//     --- 4 --- 5 --- 6
//                 --- 8
//     --- 7
//   2 --- 9 --- 10
//   11
2017年9月11日 07:12