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?

questionAnswers(2)

yourAnswerToTheQuestion