В моем коде мой выбор обновления всегда пуст, как и мой выбор выхода, поэтому переходы никогда не запускаются. Каждый раз, когда я обновляюсь, я заканчиваю перерисовку всего фрагмента DOM, как если бы он никогда не существовал раньше (т. Е. Я могу удалить все, кроме .enter, и поведение не меняется).Выбор обновлений в D3 пуст
Я использую ключевую функцию в data(), чтобы гарантировать, что соединение выполняется по уникальному значению, а не по положению.
Весь код на http://jsfiddle.net/colin_young/xRQjX/23/, но я извлек то, что я думаю, соответствующий раздел здесь (в основном, я просто пытаюсь следовать General Update Pattern):
var key = function (d) {
return d.index;
}
var filterDistance = function() {
var names = list.selectAll("div")
.data(byDistance.bottom(40), key);
// Update
names.attr("class", "update");
// Add
names.enter()
.append("div")
.attr("class", "enter")
.style("opacity", "0")
.transition()
.duration(500)
.style("opacity", "1")
.text(function (d) {
return displayText(d);
});
// Remove
names.exit()
.transition()
.duration(750)
.style("opacity", "0")
.remove();
};