将新节点添加到d3树

时间:2015-07-01 18:30:05

标签: javascript svg d3.js

使用此示例作为开始,我在使用d3树数据结构方面取得了巨大成功:

http://bl.ocks.org/robschmuecker/7880033

但是,有一个简单的任务我似乎无法找到任何答案:将节点添加到现有数据树。我不是试图改变数据来源的原始文件,也不想改变svg输出。我只是希望能够在从外部文件呈现节点后直接将数据添加到数据树

1 个答案:

答案 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);