selectAll在力布局图中实际做了什么?

时间:2015-06-23 15:16:27

标签: d3.js

我有以下代码......

 nodes = svg.selectAll("node")
            .data(graph.nodes)
            .enter()
            .append("circle")
            .attr("r", 10)
            .call(force.drag)
            .style("fill", "red");

所以我得到.data绑定数据,.enter创建一个圆圈,每个节点都有适当的属性。但是第一个selectAll在做什么?我看不到任何节点类或任何地方。

1 个答案:

答案 0 :(得分:2)

使用您的代码,它不会做太多,因为它会选择一个不存在的node元素。这不会影响enter().append,但会在重新选择更新时中断。

如果我是你,我将其编码为:

var node = svg.selectAll(".node") //<-- notice the class selectory
  .data(graph.nodes)
  .enter().append("circle")
  .attr("class", "node") //<-- and put the class on them, so we can reselect them later
  ...

这就是在博斯托克的example中完成的。