D3.js可折叠树 - 可视化设置的级别数

时间:2015-06-07 16:14:26

标签: javascript jquery d3.js tree

我正在玩这个可折叠树的例子:http://bl.ocks.org/mbostock/4339083

在此示例中,最初只显示根及其所有子项。我想知道如何可视化设定的级别数(例如根和两个额外的级别,意味着根,它的孩子和根孩子的孩子)。

我尝试修改collapse(d)函数,我在其中指定根据其depth属性折叠节点。像:

function collapse(d) {
    if (d.children && d.depth > 3) {
        d._children = d.children;
        d._children.forEach(collapse);
        d.children = null;
    }
}

但是没有一个节点崩溃,因为d.depth属性是undefined。我深入挖掘并理解(如果我错了,请纠正我)depth属性仅在nodes变量初始化后才被分配给节点。

var nodes = tree.nodes(root).reverse();

现在我完全卡住了。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:0)

我找到了问题的解决方案。事实证明,在调用tree.nodes(root)之前,节点没有父级,位置(x,y坐标)和深度属性,这会计算所有上述属性。所以我要做的就是在调用collapse函数之前调用该函数 。之后,可以仅折叠具有一定深度的节点,这些节点仅可视化特定数量的级别。