2012-10-09 15 views
47

Non riesco a capire come funziona d3.call() e quando e dove usarlo. Here è il collegamento tutorial che sto tentando di completare.libreria Javascript funzione chiamata d3

Qualcuno può spiegare specificamente che cosa questo pezzo sta facendo

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

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

il link che hai fornito spiega cosa 'call()' fa – Ibu

+9

Sì, ma ancora non riesco a ottenere ciò che svg.append ("g") .call (xAxis); sta facendo :( – Andy897

+1

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

risposta

75

penso che il trucco è quello di capire che asseX è una funzione che genera un mucchio di elementi SVG. In effetti è la funzione restituita da d3.svg.axis(). Le funzioni di scala e orientamento sono solo parte della sintassi di concatenamento (leggi di più qui: http://alignedleft.com/tutorials/d3/chaining-methods/).

Quindi svg.append("g") aggiunge un elemento del gruppo SVG allo svg e restituisce un riferimento a se stesso sotto forma di una selezione (stessa sintassi della catena in questo caso). Quando si utilizza call in una selezione, si chiama la funzione denominata xAxis sugli elementi della selezione g. In questo caso si sta eseguendo la funzione dell'asse, xAxis, sul gruppo appena creato e aggiunto, g.

Se che ancora non ha senso, la sintassi di cui sopra è equivalente a:

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

o:

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

come si modificano gli elementi G di un svg.axis()? Ho etichette che sanguinano l'uno nell'altro e voglio applicare una trasformazione a loro.Ma non riesco ad accedere a quegli elementi – CQM

+0

Controlla la risposta qui http://stackoverflow.com/questions/12825630/assign-ids-to-individual-axis- text-elements/12849772 # 12849772 Dopo aver selezionato il testo o gli elementi di spunta dovresti essere in grado di applicare le trasformazioni, se lo desideri – Superboggly

+0

C'è qualche differenza nel fare l'una o l'altra per chiamare xAxis? – st4rgut

Problemi correlati