我正在寻找适当的方法来刷新条形图,不断从API获取数据。
$http({
method: 'GET',
url: '/data' //getting data from API
}).then(function ( json ) {
//chart
}
plunker上也存在类似的情况,但我对这种方法感到内存泄漏,图表总是在闪烁。
是否有人建议使用什么而不是间隔?或者以其他方式使用它?
感谢。
答案 0 :(得分:0)
Plunker非常棒,但问题是它会持续调用c3.generate
,这就是它泄漏内存和闪烁的原因(你每次都在创建一个新的C3图表实例运行generate
;所有操作都称为new Chart(config);
)
您需要做的是在控制器中实例化C3,然后在c3.load()
来电中致电$http
。
关键位:
$interval(function() {
$http.get('chartData.json')
.then(function(json) {
$scope.countries = formatData(json.data); // format received data
$scope.chart.load({json: $scope.countries, keys: { value: ['Croatia', 'Belgium', 'Argentina'] }});
});
}, 1000);
$interval+$http
组合应该可以正常工作,前提是您正在加载的JSON文件只在某个CDN上(如果它是由REST API按请求生成的) ,您将受到限制或冲洗您的服务器)。您可能需要查看$http's caching docs。