我希望代表一个完整的项目层次结构,可以通过RESTful API访问。
为此,我想利用D3的树形布局来加载和绘制节点。此API可以返回给定类型的所有元素。但是,这些元素的子元素是通过引用URL访问的,而不是嵌套数组。
在D3中设置我的树时,我试图设置一个子访问器函数,它使用d3.json()返回给定节点的所有子节点。到目前为止,这是我的树构建器函数,其中root
是具有Children
属性的顶级项:
function buildTreeFor(root) {
var tree = d3.layout.tree();
tree.children(function(node) {
d3.json(node.Children._ref, function(data) {
return data;
});
});
var nodes = tree.nodes(root);
var links = tree.links(nodes);
}
正如人们所料,这些链接是空的,节点不会引用已发现的子节点。在阅读了D3文档和一些教程之后,我在这里找不到一个模式。我可以在Promise中返回子数据,但它会在哪里解决?在幕后的节点解析过程中某处?
我需要确保此层次结构的所有级别都在最终图表中表示。我该怎么做才能等待这些AJAX调用的解决?
谢谢!