2012-09-01 4 views
14

Sto riscontrando un problema nel tentativo di inserire un cerchio e un testo all'interno di un gruppo (stesso livello, non l'uno dentro l'altro) nel contesto .enter()D3js come aggiungere 2 bambini allo stesso livello in .enter context

var categorized = g1.selectAll("g.node").data(dataset, function(d){return d.id}) 

categorized 
.enter() 
    .append("g") 
    .attr("id", function(d,i){return d.id;}); 

categorized 
.enter().append("circle") 
    .style("fill", "#ddd"); 
// throws an error 

categorized 
.append('text') 
    .text(function(d,i){return d.count}); 
// this is working but is an update so I have to remove the text on exit 

esiste un modo per tornare al genitore, sg come questo:

categorized 
.enter() 
.append("g") 
.append("circle") 
.getBackToParent // the g 
.append("text"); 

risposta

24

Basta assegnare il wrapper genitore d3 ad una variabile:

var g = categorized.enter().append("g"); 
g.append("circle").style("fill", "#ddd"); 
g.append("text").text(function(d,i){return d.count}); 
+0

Grazie. Ha funzionato. Ho avuto un problema di associazione dei dati in precedenza e sebbene l'utilizzo di una var con il contesto di immissione fosse parte del problema, ma non lo è. – mikpouet

+0

Questo è molto utile in 'svg'. Ma cosa succede in 'html', ad esempio per alternare'

'e'
'tag? –

+0

@leonardvertighel: Non sei sicuro di cosa intendi, potresti voler fare una nuova domanda. –

Problemi correlati