使用d3.js v4-使用parentId解决歧义
我试图理解正确的用法,以实现我的可折叠树d3,但无法建立正确的父/子引用,因为我不能使用“父”。正在尝试使用parentID 这是我正在测试的数据集:使用d3.js v4-使用parentId解决歧义,d3.js,D3.js,我试图理解正确的用法,以实现我的可折叠树d3,但无法建立正确的父/子引用,因为我不能使用“父”。正在尝试使用parentID 这是我正在测试的数据集: var result = [ { "id": 1, "name": "Top Level", "parent": null, "parentId": "" }, { "id": 2, "name": "PROD", "parent": "Top Level", "parentId": 1 }, { "i
var result = [
{ "id": 1, "name": "Top Level", "parent": null, "parentId": "" },
{ "id": 2, "name": "PROD", "parent": "Top Level", "parentId": 1 },
{ "id": 3, "name": "QAT", "parent": "Top Level", "parentId": 1 },
{ "id": 4, "name": "App1", "parent": "PROD", "parentId": 2 },
{ "id": 5, "name": "App1", "parent": "QAT", "parentId": 3 },
{ "id": 6, "name": "ServerPROD001", "parent": "App1", "parentId": 4 },
{ "id": 7, "name": "ServerQAT001", "parent": "App1", "parentId": 5 }
];
并基于可折叠树:
// convert the flat data into a hierarchy
var treeData = d3.stratify()
.id(function (d) { return d.name; })
.parentId(function (d) { return d.parent })
(result);
如果我不包括第6项和第7项,这就可以了。如果我包含了这些,我会得到一个模糊错误,这是有意义的,因为它无法确定要关联到哪个“App1”
我尝试更改代码以使用parentId,但现在出现了一个错误“missing:1”
注意-我无法将“App1”名称值更改为唯一的值,因为它们将存在于具有该给定名称的多个区域中 由于您的id是唯一的,而不是名称:
// convert the flat data into a hierarchy
var treeData = d3.stratify()
.id(function (d) { return d.id; }) // return the id instead of the name
.parentId(function (d) { return d.parentId })
(result);
然后设置需要显示的名称,如下所示:
// assign the name to each node as the initial name
treeData.each(function(d) {
d.name = d.data.name;
});
可以根据以下内容找到一个工作示例:
:)
祝你好运
.id(函数(d){return d.id;}).parentId(函数(d){return d.parentId})
?mkaran-让我试试,我发现我可能没有返回运行正常的d.id,但它在树中显示了d.id,所以我看到了“1”、“2”等。。。我需要显示“name”。手动分配nametreeData.each(函数(d){d.name=d.data.name;})代码>像这样:(基本上取自)我看到我错过了什么。非常感谢mkaran!让我一天都很愉快
// assign the name to each node as the initial name
treeData.each(function(d) {
d.name = d.data.name;
});