Vererbung in Datenverbindungen

8

Schnelle Frage zum Datenbeitritt. Angenommen, ich habe einige Elemente, die jeweils ein enthalten. Wenn ich die Daten anfänglich mit den Daten verknüpfe, werden sie automatisch von den Elementen übernommen, die ich an die Eingabeauswahl angehängt habe.

Wenn die Daten geändert werden und ich es neu binden, habe ich erwartet, dass die Elemente die neuen Daten aufnehmen würden, aber das ist nicht passiert.

Um dies zu handhaben, musste ich die Daten auf der unteren Ebene explizit neu binden:

%Vor%

Dies behandelt sowohl den Fall der Erstellung als auch das anschließende erneute Binden. Aber es scheint irgendwie redundant zu sein, da die Rückgabe von [d] im Wesentlichen automatisch mit der anfänglichen Vererbung von Daten aus dem Elternelement geschieht.

Ist dieser Ansatz der richtige Weg, um damit fertig zu werden, oder werde ich irgendwo hier verwirrt?

    
Scott Cameron 12.04.2012, 18:19
quelle

1 Antwort

17

Wenn Sie Daten über selection.data an Elemente binden, werden die an diese gebundenen Daten aktualisiert diese Elemente. Die nicht wird die neuen Daten jedoch automatisch an untergeordnete Elemente weitergegeben. Sie müssen das selbst tun.

Wenn Sie selection.select aufrufen, ist dies das Gegenstück zu selection.append , Daten des übergeordneten Elements werden für jedes ausgewählte Element an das ausgewählte untergeordnete Element gebunden. Wenn Sie selection.selectAll aufrufen, sind die Daten nicht gebunden. Sie müssen anschließend selection.data aufrufen um neue Daten an Kinder zu binden.

Es ist schwierig, Ihre Frage zu beantworten, ohne mehr Kontext zu sehen. Wenn Sie die Daten für gElements aktualisiert haben und jedes G-Element einen Kreis enthält, können Sie die Daten von Parent G an den untergeordneten Kreis übergeben, indem Sie selection.select:

verwenden %Vor%

Das Code-Snippet, das Sie geschrieben haben, wird nur verwendet, wenn Sie einen neuen Kreis erstellen möchten, wenn der Kreis fehlt. Dies wird in Denken mit Joins beschrieben. Der genaue Code, den Sie schreiben würden, hängt davon ab, ob er sowohl bei der Eingabe und Aktualisierung als auch bei der Aktualisierung ausgeführt wird.

    
mbostock 12.04.2012, 19:01
quelle

Tags und Links