d3js: cria novos dados pai em nós filhos

Não consigo descobrir a melhor forma de transmitir alterações aos dados que ocorrem em um nó pai (por exemplo, um SVGg elemento) até os filhos (por exemplo, SVGcircle elementos).

Eu liisto eisto mas ainda não consegue descobrir.

Aqui está um exemplo mínimo de trabalho. O exemplo assume que você tem um objeto chamadosvg que se refere a uma seleção d3 contendo um elemento SVG.

data = [{"id":"A","name":"jim"},{"id":"B","name":"dave"},{"id":"C","name":"pete"}];

g = svg.selectAll("g").data(data, function(d) { return d.id; }).enter().append("g");

g.append("circle")
      .attr("r", 3)
      .attr("cx", 100)
      .attr("cy", function(d,i) {return 100 + (i * 30);})

// The data gets passed down to the circles (I think):
console.log("circle data:");
d3.selectAll("g circle").each(function(d) { console.log(d.name); });     

// Now change the data, and update the groups' data accordingly
data = [{"id":"A","name":"carol"},{"id":"B","name":"diane"},{"id":"C","name":"susan"}];
svg.selectAll("g").data(data, function(d) { return d.id;});

// These are the results of the change:
console.log("after change, the group has:");
d3.selectAll("g").each(function(d) { console.log(d.name); });     
console.log("but the circles still have:");
d3.selectAll("g circle").each(function(d) { console.log(d.name); });   

Alguém pode me ajudar a encontrar uma maneira concisa de obter os novos nomes em todos os elementos filhos de um grupo? No meu exemplo da vida real, cadag contém muitoscircles.

questionAnswers(2)

yourAnswerToTheQuestion