フォース レイアウトの例 ( http://bl.locks.org/1153292 ) の 1 つを使用して、Web サイトにネットワークを表示しています。
ユーザーがいつでも表示するリンクの種類を選択できるようにします。リンク タイプ 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 関数内の class 属性を更新することでこの問題を回避していますが、もちろんこれは多くの不要な作業を引き起こします。
enter操作は、既存の要素と新しい要素のマージされた選択を返すため、attr操作は既存の要素を更新して新しい要素を設定する必要があることを読みました。
私は何が欠けていますか?