我正在使用其中一个强制布局示例 ( http://bl.ocks.org/1153292 ) 在我的网站上显示一个网络。
我允许用户在任何给定时间选择要查看的链接类型。我注意到,当我选择查看链接类型 A,然后添加链接类型 B,然后删除链接类型 A 时,类型 B 的剩余链接将显示为 A 颜色。
这是运行以将链接添加到 svg 图的代码。我正在this.links
通过添加和删除链接来更改数组。如您所见,我设置了类属性,但它没有更新 - 它仍然是链接 A 的类型。
var path = svg.append("svg:g")
.selectAll("path")
.data(this.links)
.enter()
.append("svg:path")
.attr("class", function(d) { return "link " + d.type; })
.attr("marker-end", function(d) { return "url(#" + d.type + ")"; });
我目前通过更新 tick 函数中的类属性来解决这个问题,但这当然会导致很多不必要的工作。
我读到 enter 操作返回现有元素和新元素的合并选择,因此 attr 操作应该更新现有元素并设置新元素。
我错过了什么?