使用此示例作为开始,我在使用d3树数据结构方面取得了巨大成功:
http://bl.ocks.org/robschmuecker/7880033
但是,有一个简单的任务我似乎无法找到任何答案:将节点添加到现有数据树。我不是试图改变数据来源的原始文件,也不想改变svg输出。我只是希望能够在从外部文件呈现节点后直接将数据添加到数据树
答案 0 :(得分:0)
非常简单,使用此代码可以动态创建新节点。这里的selected
是具有当前选择的节点。它将是新节点的父代
const newNodeObj = {
id: id,
name: [],
attributes: [],
children: []
};
newNodeObj.name = '';
newNodeObj.id = id;
const newNode = d3.hierarchy(newNodeObj);
newNode.depth = selected.depth + 1;
newNode.height = selected.height - 1;
newNode.parent = selected;
newNode.id = id;
if (!selected.children) {
selected.children = [];
selected.data.children = [];
}
selected.children.push(newNode);
selected.data.children.push(newNode.data);
updateChart(this.selected);