【发布时间】:2016-12-20 17:00:12
【问题描述】:
我已经制作了一个 angularjs 指令来绘制一个 d3 力导向图。此图表会定期更新,包含新的节点和链接。
最近,我注意到当图表更新时,它会重绘 2 倍,这需要很长时间。部分原因是我必须先更新节点数组,然后更新边数组,每个都会触发重绘。我希望在两者都更新后调用手表。
我已经看到很多关于如何处理 OR 关系的问题,但 我特别希望在两个节点 AND 链接都更新后重绘。
这是我当前的指令:
graphs.directive('myGraph', [function () {
function renderGraph(scope, elem) {
drawGraph(scope.data, scope.data.params || {}, elem);
scope.$watchCollection('data', function (newData) {
drawGraph(newData, scope.data.params || {}, elem);
});
}
function drawGraph(data, params, elem) {
const rawSvg = elem.find(".svg")[0];
forceDirectedGraph.create(data.nodes, data.links, data.nodeTypes, rawSvg, params);
}
return {
scope: {
data: '='
},
templateUrl: 'graph.html',
link: renderGraph
}
}]);
这是我更新图表的方式:
//initialization code:
$scope.graph = { links:[], nodes:[], params:{ /*stuff*/} }
//graph update code:
$http.get(url).then( function(response) {
links = [];
nodes = [];
//process and format links and nodes for d3 from request
$scope.graph.links = links;
$scope.graph.nodes = nodes;
});
【问题讨论】:
标签: javascript angularjs d3.js