.
, bu konudur. Yani, sahip:
var data = ["foo", "bar", "baz"];
Sadece yazabilirsiniz:
.data(data)
Ancak, bazı durumlarda, bir eleman, bir üst grup verileri devralır olduğu gibi, bir sarın zorunda ekstra parantez çifti (yazdım this recent answer). Bunu yaparız çünkü alt öğe, verilerini verinin üst bilgisinin geçtiği bir işlev olarak alır.
Kontrol bu: Artık
var data = ["foo", "bar", "baz"];
var body = d3.select("body");
var divs = body.selectAll(".divs")
\t .data(data)
\t .enter()
\t .append("div");
\t
var par = divs.selectAll("p")
\t .data(d => d)
\t .enter()
\t .append("p")
\t .text(d => d);
<script src="https://d3js.org/d3.v4.min.js"></script>
, parantez fazladan bir çift ile aynı kod,:
var data = ["foo", "bar", "baz"];
var body = d3.select("body");
var divs = body.selectAll(".divs")
\t .data([data])
\t .enter()
\t .append("div");
\t
var par = divs.selectAll("p")
\t .data(d => d)
\t .enter()
\t .append("p")
\t .text(d => d);
<script src="https://d3js.org/d3.v4.min.js"></script>
f olarak irst snippet, 3 div oluşturuldu. Her biri için, bir dize verileri, paragraflara aktarılır (d3, "foo"
gibi her dizeyi ["f", "o", "o"]
gibi bir dizide döndürür ve her div için 3 paragraf alırsınız).
İkinci kod parçasında yalnızca bir div yaratılır (dizinin uzunluğu yalnızca 1 olduğundan) ve tüm iç dizi (["foo", "bar", "baz"]
) paragraflara iletilir.
Test ettiğiniz kod örneği daha eski bir d3.js sürümünü kullanıyor mu? – Mike
Funny enought, ikinci örnekte ('.data (data)'), "bazen" olduğunu gördüğünüze rağmen, en yaygın olanıdır.Bir cevap verdim, ancak ekstra parantez çiftini koymanız gereken özel durumu belirtirseniz daha iyi olur, böylece size daha ayrıntılı bir açıklama verebiliriz. –
Sanırım cevabınız yardımcı olur, ama örnek şu: – zachvac