如何用新数据不断刷新图表?
How to constrantly refresh chart with new data?
我正在寻找合适的方法来刷新不断从 API 获取数据的条形图。
$http({
method: 'GET',
url: '/data' //getting data from API
}).then(function ( json ) {
//chart
}
plunker上也有类似情况,但我怕内存泄漏,图表一直在闪烁。
有人建议用什么代替间隔吗?或者以其他方式使用它?
谢谢。
那个 Plunker 很棒,但问题是它会不断调用 c3.generate
,这就是它泄漏内存和闪烁的原因(实际上,每次 运行 generate
;它所做的一切都被称为new Chart(config);
)
您需要做的是在控制器中实例化 C3,然后在 $http
调用中调用 c3.load()
。
关键位:
$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.
我正在寻找合适的方法来刷新不断从 API 获取数据的条形图。
$http({
method: 'GET',
url: '/data' //getting data from API
}).then(function ( json ) {
//chart
}
plunker上也有类似情况,但我怕内存泄漏,图表一直在闪烁。
有人建议用什么代替间隔吗?或者以其他方式使用它?
谢谢。
那个 Plunker 很棒,但问题是它会不断调用 c3.generate
,这就是它泄漏内存和闪烁的原因(实际上,每次 运行 generate
;它所做的一切都被称为new Chart(config);
)
您需要做的是在控制器中实例化 C3,然后在 $http
调用中调用 c3.load()
。
关键位:
$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.