2013-05-03 15 views
5

D3.js aracılığıyla veri aktarırken, kütüphane verileri giriş/güncelleme/çıkış bileşenlerine böler, ancak yeniden hesaplama ve hesaplamada değişiklik yapılmayan değerler için güncelleme bölümünde çok fazla hesaplama yaptık. öznitelikleri halihazırda geçerli olan değere yeniden ayarlamak.d3: Değişmeyen düğümlerden kaçının mı?

"Güncelleştirilmiş" kümeyi değiştirilen/değişmeyen kümelere bölmek için iyi bir yol var mı?

cevap

1

Güncelleme seçiminizde başka bir seçim yapabilirsiniz. Yani, yalnızca güncellenmesi gereken şeyleri alan bir seçici ile .selectAll() numaralı telefonu arayın. Bu elbette böyle bir seçici üretebileceğinizi varsayar. Bir yaklaşım, CSS sınıfları aracılığıyla her şeyi yapmak ve kodun kendisinde hiçbir öznitelik belirlememek olabilir. Daha sonra CSS sınıfına göre seçim yapabilirsiniz.

Bunun dışında gerçekten yapabileceğiniz hiçbir şey yok. D3'ün arkasındaki fikir, görselleştirmenin veriler tarafından belirlendiği ve verilerin değişmediği durumlarda görsel öğelerin de değişmeden kaldığıdır.

0

Değerleri herhangi bir rasgele değer temelinde filtrelemek için d3 filter işlevini kullanabilirsiniz. Bu modeli geçmişte kullandım:

# store the extra value in the DOM to use for filtering later on: 
selection.attr('data-someExtraValue', function(d) { return d.someExtraValue; }); 

# during the 'update' phase, filter out values who's someExtraValue hasn't changed: 
filteredSelection = selection.filter(function(d) { return d.someExtraValue != parseInt(d3.select(this).attr('data-someExtraValue')); }); 

# do updates on the filtered selection rather than the initial selection...