Я создал схему силы d3 и отлично работает. Мой основном код следующим образом:.Детские элементы не наследовали родительские данные с компоновкой силы D3
var nodes = [{id:1, n:'n_1',np:'0'},{id:2, n:'n_2',np:'0'}];//just for demo
//1. set data
var update = svg.selectAll(".node").data(nodes);
//2. enter
update.enter().append("svg:g").attr("class", "node")
.call(function(p){
p.append("svg:image").attr("class", "nodeimage");
p.append("svg:text").attr("class", "nodetext");
});
//3. exit
update.exit().remove();
Как нам известно, d3.selectAll ("узел") данные() мои данные. Поскольку дочерние элементы g наследуют данные от родительских данных, d3.selectAll(".nodeimage").data()
также является моими данными. Я прав?
Фактически, мои узлы данных находятся из бэкэнд, а данные обновляются. Например, некоторые свойства, такие как np
, были изменены с 0 на 1. Мы рассмотрим результат: nodes = [{id:1, n:'n_1',np:'1'},{id:2, n:'n_2',np:'0'}]
;
Мне нужно снова вызвать функцию выше. Однако d3.selectAll(".node").data()
прав, а d3.selectAll(".nodeimage").data()
не прав.
Следующий код не будет работать.
d3.selectAll('.nodeimage').attr("test", function(d){
//d.np is a wrong value.
});
Любые предложения для меня?
Вот мой демо jsfiddle: http://jsfiddle.net/bpKG4/663/
А что на ваш вопрос? –
Должно быть что-то еще, где-то в вашем коде, где вы редактируете 'np'. Не могли бы вы опубликовать код для полного примера, показывающего ошибку? – tarulen
@tarulen Мой дорогой друг, я закончил свое демо на jsfiddle. Пожалуйста, взгляните на него. Мне нужна ваша помощь, спасибо. – Does