我已經創建了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.Please看看它,我需要你的幫助,謝謝。 – Does