2017-01-11 4 views
0

ich einen Leitungsweg haben, wie dies in einer Anordnung eines Arrays nimmt:D3.js ziehen Leitungsweg mit Datenarray

[[{x:0,y:1},{X:3,y:4],[{x:0,y:2},{x:3,y:6},{x:8,y:10}]] 

meine Leitungsweg wie folgt aussieht:

this.line = D3['line']() 
      .x(function (d) {console.log(d); return d.x; }) 
      .y(function (d) {console.log(d); return d.y; }); 

dieses funktioniert gut, jetzt möchte ich meine Daten ändern, so dass ich die Füllung und den Text von jedem, so dass ich mein Datenformat so aussehen kann.

[{"data":[{x:0,y:1},{X:3,y:4]} 
,"fill":"red","txt":"test","x":"0","y":0}, 
{data:[{x:0,y:2},{x:3,y:6},{x:8,y:10}],"fill":"red","txt":"test","x":"0","y":0} 
] 

ich ändern Sie dann den Leitungsweg wie folgt aussehen:

this.line = D3['line']() 
      .x(function (d) {console.log(d); return d.data.x; }) 
      .y(function (d) {console.log(d); return d.data.y; }); 

aussieht, da die Daten ein Objekt ist kein Array, ist es nicht Schleife für den Weg bekommt. Ich habe das DOM überprüft, der Pfad wurde erstellt, nur die Pfaddaten werden nicht ausgefüllt. Der Code hat nie den Zeilenpfad ausgeführt, der in obj: [] enthalten ist. Wie kann ich das Array daran vorbeiführen?

Dank

Antwort

0

ok, nachdem sie mit einer Reihe von verschiedenen Ding rumgespielt, das ist, wie ich es getan habe, habe ich zu, wie dies die d.data in die Leitung Funktion übergeben.

.attr("d",function(d){return self.line(d.data)})