D3.js树全部展开并全部折叠

asr*_*srm 10 javascript d3.js

我正在使用D3.js构建一个树,我想要做的是添加两个按钮,全部展开和全部折叠到这样的页面顶部.

在D3.js中展开全部并折叠全部

当我单击"全部展开"时,所有节点都应该展开.当我单击"全部折叠"时,所有节点都应折叠到根元素.

这是我目前的代码http://bl.ocks.org/anonymous/ab8d7f85cca6f745a107

但问题是,它不起作用.有人可以建议如何使它工作?

Gil*_*sha 19

试试这个代码.这是工作的JsFiddle.

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

function expandAll(){
    expand(root); 
    update(root);
}

function collapseAll(){
    root.children.forEach(collapse);
    collapse(root);
    update(root);
}
Run Code Online (Sandbox Code Playgroud)