2016-04-02 9 views
0

Stellen Sie sich vor ich habe folgendes Szenario:Wie JavaScript Callbacks wissen, was sind ihre Parameter?

var dataset = [5, 5, 5, 5, 5] 

d3.select("body").selectAll("p") 
    .data(dataset) 
    .enter() 
    .append("p") 
    .text(function(a) { return a;}); 

Ich verstehe nicht, wie genau zu verstehen, Javascript, weiß, daß ich mit den Daten zu tun habe, ist es im Zusammenhang, wie die .text Methode definiert ist?

Ich lese dann diese article und wurde noch verwirrter, weil es in meinem Fall nicht funktioniert. Da Code:

d3.select("body").selectAll("p") 
    .data(dataset) 
    .enter() 
    .append("p") 
    .text(function(err, data) { return data;}); 

Meine Ausgabe ist:

0 

1 

2 

3 

4 

Also meine Frage ist: Was ist die Konvention? Wie wird es umgesetzt?

+0

ich nicht so wäre sein ... Er ist Ich frage nach Methodenverkettung, die in meiner Frage verwendet wird, aber es ist nicht das Gleiche. –

Antwort

1

anstelle von

.text(function(err, data) { return data;}); 

Code sollte sein:

.text(function(data, index) { return data;}); 

weil d3 Rückrufe geben Daten als ersten Eingang und Index als zweite Eingabe in der Funktion.

diese Geige Siehe: https://jsfiddle.net/m8h0maLn/1/

1

im .text() -Methode wird es callback.apply(this,[this.err,this.someData]) „dieses“ unter Bezugnahme auf die d3 Prototyp denken

Verwandte Themen