2017-06-12 12 views
4

私のアングルチャートは工場からのブロードキャストから更新されたときにデータを表示していないという問題があります。私は、これは変更される可能性があり、ユーザの入力に基づいて、そのようなのようなラベルとデータを設定しています:ウォッチャーからの角度チャートの読み込み - 奇妙な動作

// Listener function in controller, receives data from factory 
$scope.$on("New Data", function(event, data, ID) { 
     processTripData(data, ID).then(function(result) { 
      setTypeDistributionBar(result).then(function(r) { 
       buildTypeDistributionBar(r.data, r.labels); 
      }) 
     }) 
    }) 
var buildTypeDistributionBar = function(data, labels) { 
     $scope.distributionLabels = labels; 
     $scope.distributionData = [data]; 
    } 

問題は、これが唯一のbuildTypeDistributionBarの2回目の呼び出し後のチャートを更新していることです。だから、このチャートは、ユーザーが入れているものよりも常に1クエリーです。

質問:これが2回目に呼ばれた後にチャートが表示されるのはなぜですか?すぐに更新する方法はありますか?

更新:これを示すためにfiddleを作成しましたが、私と同じような動作はしませんが、それと似ています。

答えて

1

これはちょうどscope関連の問題であることが判明しました。this questionへの回答は私に次のようにつながります。基本的に$scope.$apply();はダイジェストを強制します。今やチャートはもう一歩も後ろにはありません:

var buildTypeDistributionBar = function(data, labels) { 
     $scope.distributionLabels = labels; 
     $scope.distributionData = [data]; 
     $scope.$apply(); 
} 
関連する問題