2016-08-30 52 views
0

我想为图表的动画回调设置一个函数。到目前为止,我的选择对象看起来像这样:Chart.js 2.x动画onComplete没有响应

$scope.chartOptions = { 
     responsive: true, 
     datasetFill: false, 
     title: { 
      display: true, 
      text: "Title", 
      fontSize: 14 
     }, 
     tooltips: { mode: 'label' }, 
     animation: { 
      onComplete: function(animation){ 
       $log.debug('onComplete'); 
      }, 
      onProgress: function(animation) { 
       $log.debug('onProgress'); 
      } 
     } 
} 

看到,有我有动画的onComplete和onProgress不工作。但是,如果我设置全球图表配置它正常工作。

Chart.defaults.global.animation.onProgress = function() { $log.debug('onprogress') }; 

这似乎是一个简单的错误,但我只是看不到它!我指的是动画回调是否正确?我不会把它设置为全局变量,所以我可以针对不同的图表设置不同的行为。

谢谢!

编辑: 此外,使用全球方式我无法访问图表实例。像:

onComplete: function(animation){ 
       if(!this.savedImage) { 
        $scope.saveChartImage(this); 
        this.savedImage = true; 
       } 
+1

根据这个例子(https://github.com/chartjs/Chart.js/blob/master/samples/AnimationCallbacks/progress-bar.html),它看起来像你做对了。你如何将'options'传递给图表对象? –

回答

1

我解决了这个问题。我将$scope.chartOptions传递给一个函数,根据其他参数为其添加属性。我为几个图表做了这个工作,所以我克隆了$ scope.chartOptions并修改了它的克隆版本,最后将这些克隆传递给了图表的构造函数。

问题:为了克隆对象,我正在做对象的浅表副本,并且如解释here所示,集合的浅表副本是集合结构的副本,而不是元素。出于这个原因,我失去了onProgress和onComplete功能。

所以我用angular.copy($scope.chartOptions)