繁体   English   中英

D3 TypeError:link.exit不是函数link.exit()。remove(); 我究竟做错了什么?

[英]D3 TypeError: link.exit is not a function link.exit().remove(); What am I doing wrong?

我正在制作D3树布局。 我看了一遍,当你没有数据绑定到DOM并且你试图删除它时,似乎会出现此错误。 我不仅确保那里有数据,而且还通过在修改之前和之后对链接数组进行计数来确保数据发生变化。

这是我的更新功能的问题代码。

    link = linkElements.selectAll("path.link") //link elements is dom object that holds my links
    .data(links).enter().append("path")
    .attr("class", "link")
    .attr("d", diagonal);

    link.exit().remove();

它与许多例子几乎相同,但我一直看到这个:

TypeError: link.exit is not a function

link.exit().remove();

到底是怎么回事? 我做了类似节点的事情。 我无法从树中删除任何内容。

请注意分配给哪个link

link = linkElements.selectAll("path.link")
  .data(links)
.enter() // <----- THIS
  .append("path")
  .attr("class", "link")
  .attr("d", diagonal);

因此, link是包含由enter()子选择产生的新附加节点的选择,因此它没有按定义的exit()子选择。

您需要(可能意味着)做的是为整个数据绑定选择分配link然后处理子选择:

link = linkElements.selectAll("path.link")
  .data(links);// link assigned
link.enter() // <----- THIS
  .append("path")
  .attr("class", "link")
  .attr("d", diagonal);
link.exit().remove(); // no more errors!

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM