Ich benutze D3, um ein benutzerdefiniertes Diagramm mit einem Rahmenrechteck zu zeichnen. Bei der Fenstergrößenanpassung berechne ich die SVG-Größe neu und möchte diesen Rahmen neu zeichnen. Ich tue dies derzeit in einer drawGraph()
Funktion, die auf Resize/neue Daten aufgerufen wird:D3 Konvention zum (erneuten) Zeichnen eines einzelnen Objekts
...
svg.selectAll('rect')
.data([true])
.attr('width', w)
.attr('height', h)
.enter()
.append('rect')
.attr('x', 0)
.attr('y', 0)
.attr('width', w)
.attr('height', h)
.style('fill', 'none')
...
also - ich einen einzelnen Wert in einem Array bin Bindung ([true]
) auf die Auswahl, so dass ich entweder die zeichnen Box, oder ändern Sie einfach seine Größe, wenn es bereits einmal gezeichnet wurde. Es funktioniert sicherlich, aber es fühlt sich etwas seltsam an, Daten zu binden, die garantiert ignoriert werden, und möglicherweise eine etwas hacky Art, Dinge zu tun.
Ist dies eine gut gebrauchte Konvention, oder gibt es einen anderen Standard-Weg, dies zu tun, wie zum Beispiel:
- A D3 Methode, die ich nicht über
- gekommen sind, gerade
svg.append('rect')
und anschließend Entfernen + Neu zeichnen auf Größe ändern svg.selectAll('*').remove()
und alles von Grund auf neu zeichnen?- Alles andere