Sonunda D3'ü öğrenme sürecindeyim ve bir yanıt bulamadığım bir sorunla karşılaştım. Sorularımın kütüphane ile deyimsel olarak düşünmediğimden veya şu anda habersiz olduğum bir prosedürden kaynaklandığından emin değilim. Ayrıca Haziran ayında web ile ilgili şeyler yapmaya başladığımı da belirtmeliyim, bu yüzden javascript için oldukça yeni.D3, iç içe ekler ve veri akışı
Kullanıcıya, ilgili görüntülere sahip yiyeceklerin listesini veren bir araç oluşturduğumuzu varsayalım. Ayrıca, her bir liste öğesinin başka bir görünüme bağlanabilmesi için benzersiz bir kimlik tarafından etiketlenmesi gereken ek kısıtlamalara ekleyelim. Bunu çözmek için ilk sezgilerim, her biri kendi 'un kendi kimliğine sahip bir liste oluşturmaktır. Burada her bir div
, kendi <p>
ve <img>
'dur. Ortaya çıkan HTML görünümü aşağıdaki gibi olacaktır:
<div id="chocolate">
<p>Chocolate Cookie</p>
<img src="chocolate.jpg" />
</div>
<div id="sugar">
<p>Sugar Cookie</p>
<img src="sugar.jpg" />
</div>
gibi bu araç için veri bireysel JSON görünen bir JSON dizisi, içinde:
{ "label": "sugar", "text": "Sugar Cookie", "img": "sugar.jpg" }
elde edebilirim için bir yol var mı Birinde HTML düştü? bir div ekleme bir taban durumunda başlayarak, kod aşağıdaki gibi olabilir: Artık
d3.select(containerId).selectAll('div')
.data(food)
.enter().append('div')
.attr('id', function(d) { return d.label; });
, ne olmuş bir <p>
ile <div>
eklemeye ne dersiniz? (1) nasıl div
eleman verileri alırım, ve (2) nasıl birden çocukları ekleyebilirsiniz: Ben bu konuda iki sorun bakın
d3.select(containerId).selectAll('div')
.data(food)
.enter().append('div')
.attr('id', function(d) { return d.label; })
.append('p').text('somethingHere');
Ama: My orijinal bir düşünce böyle bir şey yapmak oldu bir bildirici zincirde aynı ebeveyn? img
'a ekleyeceğim üçüncü adımı yapmanın bir yolunu düşünemiyorum.
http://bost.ocks.org/mike/nest/'a işaret eden başka bir gönderide yuvalanmış seçimden bahsetmiştim. Ama iç içe geçmiş bir seçimdir ve bu yüzden bu durum için uygun/idiyomik olan üç parçanın eklerini parçalara ayırarak mı? Ya da bu yapıyı bir deklarasyon zincirinde şekillendirmek için iyi yapılandırılmış bir yol var mı? https://github.com/mbostock/d3/wiki/Selections'da belirtilen alt seçimlerin bir yolu olabilir gibi görünüyor, ancak bu hipotezi test etmek için dil ile yeterince tanıdık değilim. kavramsal düzeyde kaynaktan
, bu üç nesneleri (div
,
p
ve
img
) daha bir grup yerine ayrı ayrı öğeler olarak ele alınır, ve kodu da yansıyan halinde çok daha iyi olurdu.
Fantastik! Çocuk düğümlerinin aynı veri kapsamına sahip olduğunu fark etmemiştim. Açıklama için teşekkürler :) –
'selection.each' kullanılarak yükseltilmiştir. – Yawar
Gruplandırılmış (veya iç içe) düğümler eklemek için 'selection.each' işlevini kullanırsanız, güncelleştirme adımı için 'selection.each' özelliğini de kullanmayı unutmayın (ve belki de çıkış adımı için). – npdoty