2013-03-27 2 views
0

В моем коде мой выбор обновления всегда пуст, как и мой выбор выхода, поэтому переходы никогда не запускаются. Каждый раз, когда я обновляюсь, я заканчиваю перерисовку всего фрагмента 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(); 
}; 

ответ

1

bewest в https://groups.google.com/forum/?fromgroups=#!topic/d3-js/9mrspdWqkiU был в состоянии чтобы найти проблему. Оказалось, что на моем «рабочем» сводном дисплее я использовал $('results').text('insert summary here'), который, конечно же, вытирает все остальное, что я мог застрять там (например, мои D3 сгенерированные divs).

Смежные вопросы