In backbone.js, una funzione di rendering di una vista genera un html non collegato che può essere successivamente collegato al dom.Rendering in Backbone.js utilizzando d3.js e svgs
Attualmente, devo avere un target esistente nell'HTML per poter aggiungere un file svg a. Quindi utilizzo i dati/inserisci pattern per inserire elementi nel file svg. C'è un modo per ottenere d3.js per generare lo svg senza collegarlo al dom?
var svg = d3.select("#target").append('svg')
.attr("viewBox","0 0 100 100");
svg.selectAll("circle")
.data(data)
.enter().append("circle")
.attr("r", 10)
.style("fill", "black");
In alternativa, è possibile fornire a d3 un elemento dom non collegato per aggiungere elementi a? Qualcosa come questo? D3.js documentazione suggerisce che select può accettare i nodi, ma il seguente non funziona neanche per me
var svg = d3.select(this.$el).append('svg') // Uncaught TypeError: Object [object Object] has no method 'appendChild'
.attr("viewBox","0 0 100 100");
svg.selectAll("circle")
.data([1,2,3])
.enter().append("circle")
.attr("r", 10)
.style("fill", "black");
Hai provato 'd3.selectAll ([this.el])'? D3 potrebbe non essere soddisfatto di un oggetto jQuery, potrebbe volere un vero array. –
Ho provato (non funziona). A proposito, la documentazione di d3 a cui mi riferivo suggerisce che d3 funziona bene con gli oggetti Jquery. https://github.com/mbostock/d3/wiki/Selections#wiki-d3_select -> "Questi metodi possono anche accettare nodi, che è utile per l'integrazione con librerie di terze parti come jQuery o strumenti di sviluppo" – kumikoda