如何使用新数据约束刷新图表?

时间:2016-03-11 10:29:39

标签: javascript angularjs settimeout setinterval c3.js

我正在寻找适当的方法来刷新条形图,不断从API获取数据。

$http({
  method: 'GET',
  url: '/data' //getting data from API
}).then(function ( json ) {
   //chart 
}

plunker上也存在类似的情况,但我对这种方法感到内存泄漏,图表总是在闪烁。

是否有人建议使用什么而不是间隔?或者以其他方式使用它?

感谢。

1 个答案:

答案 0 :(得分:0)

Plunker非常棒,但问题是它会持续调用c3.generate,这就是它泄漏内存和闪烁的原因(你每次都在创建一个新的C3图表实例运行generate;所有操作都称为new Chart(config);

您需要做的是在控制器中实例化C3,然后在c3.load()来电中致电$http

Updated Plunker

关键位:

  $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