2017-04-21 154 views
1

My collapsible tree如何使用d3.js展開可摺疊樹上的特定節點?

我有這棵樹,我想每次展開一個節點。我發現了這個代碼,但它一次展開所有節點。

function expand(d){ 
    if (d._children) { 
     d.children = d._children; 
     d.children.forEach(expand); 
     d._children = null; 
    } 

}

我有這棵樹背後的邏輯,我想展開一個特定節點每當我想通過傳遞一個參數,如節點的名稱,選擇我要擴大哪個節點。與d._children搞亂像在此之前

回答

2

要麼停止遞歸:

function expand(d){ 
    if(d._children && d.level < 3){ // or d.name.indexOf("SpecialNode") > -1 or d.category == "expandable" or d.parent.name == "somename" etc 
     d.children = d._children; 
     d.children.forEach(expand); 
     d._children = null; 
    } 
} 

或過濾d.childrenforEach

function expand(d){ 
    if(d._children){ 
     d.children = d._children; 
     d.children.filter(function(d) { return d.name.indexOf("SpecialNode") > -1; }) 
        .forEach(expand); 
     d._children = null; 
    } 
} 

(我想我更喜歡者均基於後者)

好運!