【问题标题】:Adding a new node to d3 tree将新节点添加到 d3 树
【发布时间】:2015-07-01 18:30:04
【问题描述】:

使用这个例子作为开始,我在 d3 树数据结构上取得了巨大的成功:

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

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

【问题讨论】:

标签: javascript svg d3.js


【解决方案1】:

很简单,使用这段代码动态创建一个新节点。这里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);

【讨论】:

  • 如何确定新对象的位置(即 vx、vy、x、y 等)?这是我唯一想不通的部分。
猜你喜欢
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多