2016-03-22 10 views
0

Also das ist mein Code, ich habe ein Array von Arrays, und sie enthalten ein Objekt mit 4 Punkten, so dass ich eine Linie mit Svg zeichnen kann, wenn ich den Code mit getestet nur ein Array hat gut funktioniert, aber ich kann es nicht mit einem Array von Arrays arbeiten, jede Hilfe wäre sehr geschätzt.d3.js verschachtelte Auswahl, funktioniert nicht

var circle = svgContainer.selectAll("svg").data(mainMt); 
console.log(circle); 
console.log("Linea"); 
var line = circle.data(function(d) { return d; }) 
.enter().append("line") 
         .attr("x1", function (d) { return d.x1; }) 
         .attr("y1", function (d) { return d.y1; }) 
         .attr("x2", function (d) { return d.x2; }) 
         .attr("y2", function (d) { return d.y2; }) 
         .attr("stroke-width", 2) 
         .attr("stroke", "black"); 

         console.log(line); 
+2

Sie verpassen die verschachtelte Auswahl Siehe [diese Anleitung] (https://bost.ocks.org/mike/nest/). –

+0

IOkay Ich habe die Auswahl hinzugefügt, und es wirft keinen Fehler, aber meine Zeile Variable kommt als ein leeres Array, ich muss jedes Objekt des Arrays innerhalb des Arrays, so dass meine Annäherung an diese Objekte bekommen, jede Umgehungslösung oder etwas, das mir fehlt. Ich habe dieses Tutorial schon ein paar Mal gelesen, aber ich bin ziemlich neu in d3. – Adrian

+0

Können Sie ein vollständiges Beispiel angeben, das das Problem veranschaulicht? –

Antwort

0

Es gibt zwei Dinge fehlen - erstens, Sie müssen sich auf die Eingabe Auswahl der Top-Level-Auswahl arbeiten und zweitens, wählen Sie die Dinge für die verschachtelte Auswahl:

svgContainer 
    .selectAll("g.lines") 
    .data(mainMt) 
    .enter().append("g") 
    .attr("class"‌​, "lines") 
    .selectAll("line").data(function(d) { return d; }) 
    .enter() 
    .append("line") 
    ... 
+0

Funktioniert wie ein Charme, vielen Dank, Lars! – Adrian