Как обновить элементы силового макета D3 при изменении базовых данных

используя один из примеров силового макета (http://bl.ocks.org/1153292) показать сеть на моем веб-сайте.

Я разрешаю пользователю выбирать, какой тип ссылок видеть в любой момент времени. Я замечаю, что когда я выбираю вид ссылки типа A, затем добавляю тип ссылки B, а затем удаляю тип ссылки A, оставшиеся ссылки типа B представлены цветами A.

Это код, который запускается для добавления ссылок на диаграмму svg. Я меняю массивthis.links добавив и удалив ссылки с него. Как видите, я установил атрибут класса, но он не обновляется - он остается типа ссылки А.

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 + ")"; });

В настоящее время я работаю над этой проблемой, обновляя атрибут class внутри функции tick, но это, конечно, вызывает много ненужной работы.

Я прочитал, что операция ввода возвращает объединенный выбор существующих элементов, а также новых, поэтому операция attr должна обновить существующий и установить новый.

Чего мне не хватает?

Ответы на вопрос(2)

Ваш ответ на вопрос