2016-08-30 16 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') }; 

それは簡単な間違いのようですが、私はそれを見ることができません!私はアニメーションのコールバックが正しいと言いますか?私はグローバルに設定しないので、別のチャートに異なる動作をさせることができます。

ありがとうございました!

編集: また、グローバルな方法でチャートインスタンスにアクセスすることもできません。 Like:

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)を使用しました。

関連する問題