Jak zaktualizować elementy układu siły D3, gdy zmieniają się podstawowe dane
Używam jednego z przykładów układu sił (http://bl.ocks.org/1153292) aby wyświetlić sieć na mojej stronie internetowej.
Pozwalam użytkownikowi wybrać rodzaj linków do wyświetlenia w danym momencie. Zauważam, że kiedy wybieram opcję zobaczenia typu łącza A, dodaj link typu B, a następnie usuń link typu A pozostałe linki typu B są prezentowane za pomocą kolorów A.
Jest to kod, który uruchamia się, aby dodać linki do diagramu svg. Zmieniam tablicęthis.links
dodając i usuwając z niego linki. Jak widać, ustawiam atrybut klasy, ale nie aktualizuje - pozostaje on typu łącza 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 + ")"; });
Obecnie rozwiązuję ten problem, aktualizując atrybut klasy wewnątrz funkcji kleszcza, ale ten kurs powoduje niepotrzebną pracę.
Czytałem, że operacja enter zwraca połączony wybór istniejących elementów, a także nowych, więc operacja attr powinna zaktualizować istniejącą i ustawić nową.
czego mi brakuje?