Я использую один из примеров компоновки силы (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, но этот курс не требует много работы.
Я прочитал, что операция ввода возвращает объединенный выбор существующих элементов, а также новые, поэтому операция attr должна обновлять существующую и устанавливать новую.
Что мне не хватает?