2017-06-12 76 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第二個電話後更新圖表。因此,此圖表始終是1查詢背後的用戶放入什麼。

問:爲什麼只有在第二次調用該圖表後才顯示圖表?我怎樣才能實現它立即更新?

更新:我創建了一個fiddle來演示這一點,它不顯示像我一樣的行爲,但類似。

回答

1

我發現這可能只是一個scope相關問題,而對this question的回答會引導我進入以下工作。基本上$scope.$apply();強制摘要。現在圖表不再落後一步:

var buildTypeDistributionBar = function(data, labels) { 
     $scope.distributionLabels = labels; 
     $scope.distributionData = [data]; 
     $scope.$apply(); 
}