2012-09-01 5 views
14

Tengo un problema al tratar de poner un círculo y un texto dentro de un grupo (mismo nivel, no dentro de cada uno) en el contexto .enter()D3js cómo agregar 2 niños al mismo nivel en .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 

¿hay una manera de volver a la matriz, sg así:

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

Respuesta

24

Basta con asignar la envoltura d3 matriz a una variable:

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

Gracias. Funcionó. Tuve un problema de enlace de datos antes y aunque usar una var con el contexto enter fue parte del problema, pero no es así. – mikpouet

+0

Esto es muy útil en 'svg'. Pero, ¿qué pasa con 'html', por ejemplo, para alternar las etiquetas'

'y'
'? –

+0

@leonardvertighel: No estoy seguro de lo que quiere decir, es posible que desee hacer una nueva pregunta. –

Cuestiones relacionadas