2012-10-09 6 views
47

Ich bin nicht in der Lage zu verstehen, wie d3.call() funktioniert und wann und wo das zu verwenden. Here ist der Tutorial-Link, den ich versuche zu vervollständigen.Javascript Bibliothek d3 Anruf Funktion

Kann erklären bitte jemand speziell, was dieses Stück

var xAxis = d3.svg.axis() 
       .scale(xScale) 
       .orient("bottom"); 

svg.append("g").call(xAxis); 
+0

der Link zur Verfügung gestellt wird erklärt, was 'call()' tut – Ibu

+9

Ja, aber ich bin immer noch nicht in der Lage zu bekommen, was svg.append ("g") .call (xAxis); tut :( – Andy897

+1

siehe https://github.com/d3/d3-selection/blob/master/README.md#selection_call –

Antwort

75

Ich denke, der Trick hier ist zu verstehen, tut das xAchse eine Funktion, die eine Reihe von SVG-Elemente erzeugt. Tatsächlich ist es die Funktion, die von d3.svg.axis() zurückgegeben wird. Die Skalierungs- und Orientierungsfunktionen sind nur ein Teil der Verkettungssyntax (lesen Sie mehr dazu hier: http://alignedleft.com/tutorials/d3/chaining-methods/).

Also fügt svg.append("g") ein SVG-Gruppenelement an die SVG an und gibt einen Verweis auf sich selbst in Form einer Auswahl zurück (die gleiche Kettensyntax wird hier verwendet). Wenn Sie call für eine Auswahl verwenden, rufen Sie die Funktion xAxis für die Elemente der Auswahl g auf. In diesem Fall führen Sie die Achsenfunktion xAxis in der neu erstellten und angehängten Gruppe g aus.

Wenn das immer noch nicht sinnvoll, die Syntax oben äquivalent zu:

xAxis(svg.append("g")); 

oder:

d3.svg.axis() 
     .scale(xScale) 
     .orient("bottom")(svg.append("g")); 
+0

Wie würde man die G-Elemente einer svg.axis() bearbeiten? Ich habe Labels, die bluten ineinander, und ich möchte eine Transformation auf sie anwenden, aber ich kann nicht auf diese Elemente zugreifen – CQM

+0

Überprüfen Sie die Antwort hier http://stackoverflow.com/questions/12825630/assign-ids-to-individual-axis- text-elements/12849772 # 12849772 Nachdem Sie die Text- oder Tick-Elemente ausgewählt haben, sollten Sie in der Lage sein, Transformationen anzuwenden, wenn Sie möchten – Superboggly

+0

Gibt es einen Unterschied, den einen oder anderen zu tun, um xAxis aufzurufen? – st4rgut

Verwandte Themen