2016-06-23 12 views
4

Ich bin ziemlich neu bei D3 und sah vor kurzem dieses Stück Code, während jemand einen Übergang erstellt: d3.select({}) in d3.select({}).transition() usw. Dies scheint das gleiche zu tun wie d3.select([]). In der Konsole zeigte es sich als ein Array, aber ich bin mir immer noch nicht sicher, was es tut. Jede Hilfe wäre willkommen, danke!Was macht die "leere" Auswahl von D3?

+0

Das sieht ziemlich interessant aus! Wo hast du es gesehen? Könnten Sie einen Link teilen? Es ist schwer zu sagen, wofür es gut ist, ohne Kontext zu haben. – altocumulus

+0

Ich fand es hier (Zeile 49): http://codepen.io/atticweb/pen/GZKvgv beim Versuch, ein Echtzeit-Diagramm von hier aus zu machen: https://gist.github.com/mbostock/1642874. Ich hoffe, das hilft! –

Antwort

5

Der einzige Ort, den ich gesehen habe, ist here. Jetzt würden Sie normalerweise das Objekt d3.select, das Sie den Übergang ausführen möchten. Aber im verknüpften Beispiel ist Bostock nicht Betrieb auf Svg bestehend aus verschiedenen DOM-Objekten zu manipulieren, sondern auf einer Leinwand, die für jeden Schritt im Übergang gelöscht und neu gezeichnet werden muss. So, d3.select({}).transition(), wird einfach eine einfache Möglichkeit, einen generischen Übergang zu starten, mit dem er arbeiten kann. Sie sollten beachten, dass etwas ausgewählt werden muss, um einen Übergang zu erstellen, nur funktioniert nicht und ein leeres Objekt (oder ein leeres Array) funktioniert.

+0

Vielen Dank! Es scheint also nur ein schneller Weg zu sein, um einen Übergang in Gang zu bringen. Ich habs. –

+2

Es ist erwähnenswert, dass dies jedes Mal, wenn es aufgerufen wird, einen ** neuen ** Übergang erzeugt. Mein erster Gedanke war, ['d3.transition()'] (https://github.com/d3/d3/wiki/Transitions#d3_transition) zu verwenden, um einen Übergang zu erstellen. In diesem Fall wird es nicht funktionieren, wie man vielleicht denken würde, weil es äquivalent zu "d3.select (document) .transition()" ist, wodurch der Übergang unterbrochen wird, der zuvor bei "document" gestartet wurde. Wenn ein leeres Objekt zum Starten eines Übergangs ausgewählt wird, sind alle diese Übergänge unabhängig voneinander und können daher gleichzeitig ausgeführt werden. @PeterQiu – altocumulus

+1

Hier ist ein Beispiel für diesen Trick, der auf SVG verwendet wird: https://bost.ocks.org/mike/path/ (Zeile 143 in der index js-Datei in Quellen) – plafer