0
我正在構建一個強制定向圖,並且據我所知,我已經正確編寫了代碼。此代碼運行後,DOM看起來完全正確。然而,沒有顯示。D3更新DOM,但沒有任何顯示
var type_node_list = typeNodes(data);
shuffle(type_node_list);
initializePosition(type_node_list);
var links = typeLinks(type_node_list);
var svg = d3.select('#root');
var link = svg
.append('g')
.attr('id', 'links')
.selectAll('line')
.data(links)
.enter()
.append('line')
.attr('class', 'link');
var type_nodes = svg
.append('g')
.attr('id', 'nodes')
.selectAll('.node')
.data(type_node_list)
.enter()
.append(createTypeNode);
function updateTypeNodeLocations() {
link
.attr("x1", function(d){return d.source.x;})
.attr("y1", function(d){return d.source.y;})
.attr("x2", function(d){return d.target.x;})
.attr("y2", function(d){return d.target.y;});
type_nodes
.attr('x', nodeX)
.attr('y', nodeY);
}
updateTypeNodeLocations();
/*
var position_the_types = d3.forceSimulation()
.nodes(type_node_list)
.force("charge",d3.forceManyBody().strength(-10))
;
position_the_types.on('tick',updateTypeNodeLocations());
*/
模擬部分被註釋掉,因爲我試圖讓第一部分工作。當我取消註釋時,即使處理顯然不完整,它也只會調用「剔」事件一次。 JavaScript控制檯中沒有任何內容可以解釋它。
查看http://jsfiddle.net/jarrowwx/gof5knaj/36/的完整代碼。
今天早上我做了些事情,發生了一些變化,現在我沒有做任何事情似的。我檢查了D3 github,最後一次提交看起來是在11天前,所以它不可能是由於對庫改變造成的。
有沒有人經歷過這樣的事情?任何指針我做錯了什麼?我發現了D3錯誤嗎?
當我運行撥弄我看到很多的彩色圓圈與形狀我應該看別的東西嗎? –
當調用'position_the_types.on('tick',updateTypeNodeLocations());'你實際上將函數'updateTypeNodeLocations'的返回值作爲回調函數傳遞,這不是你想要的。你只需要傳遞函數的引用而不是調用它:'position_the_types.on('tick',updateTypeNodeLocations);'沒有內部圓括號。如果是這樣的話,甚至可以考慮完全刪除這個問題。 – altocumulus
@altocumulus,你是對無關的parens。 DOH!這解決了滴答問題。但即使修好之後,我仍然沒有看到任何東西。 –