小编McG*_*gen的帖子

异步将节点添加到d3.hierarchy

我正在用D3(v4)写一棵树,以显示一种特殊类型的数据,其中结构具有很多级别。因此,我决定异步加载每个新级别的数据:当用户单击节点时,我会异步加载其子级。

我达到了预期的结果,但是我不确定这是最好的方法,因为我感觉自己在重写方向盘。有人可以确认我的代码或告诉我一种更好的方式来满足我的需求吗?我在互联网上找不到关于d3和这种异步性的任何信息...

这是简化的代码:

树初始化

// Starting data
var data = {
    "name": "node1",
    "children": [{
        "name": "child1",
        "children": []
    }, { 
        "name": "child2",
        "children": []
    }]
};
// Tree creation
var root = d3.hierarchy(data);
Run Code Online (Sandbox Code Playgroud)

点击代码

function click(d) {
    loadChildrenFromServer(d, fooCallback);
}

function loadChildrenFromServer(d, callback) {
    //Simulating server call
    setTimeout(function () {
        //Mock async data
        var mockchildren = [{
            "name": "asyncChild1",
            "children": []
        }, {
            "name": "asyncChild2",
            "children": []
        }];

        d.data.children = children;    //Updating data
        d.children = [];               //Initializing d3 node …
Run Code Online (Sandbox Code Playgroud)

javascript d3.js d3.js-v4

5
推荐指数
0
解决办法
563
查看次数

标签 统计

d3.js ×1

d3.js-v4 ×1

javascript ×1