2016-08-13 235 views
0

這是我從服務器獲取數據的代碼。視圖在更改範圍後不更新角度變量js

sampleApp.controller('OfferController', function ($scope, $state) { 

    var offersRef = firebase.database().ref('offers'); 
    $scope.offers = []; 

    offersRef.on('value', function(snapshot) { 
     $scope.offers = snapshot.val(); 
     //$state.go($state.current, {}, {reload: true}); 

    }); 
}); 

最初$ scope.offers = [];是空的。它在這裏被填滿。 $ scope.offers = snapshot.val();

但是視圖沒有更新。如果我在同一頁面上點擊任何按鈕或其他任何按鈕,或返回並在同一頁面上再次出現。它得到更新。

爲什麼在數據可用時沒有立即更新?怎麼修?

回答

3

在設置值之後設置值以更新綁定之後調用$scope.$apply();

$scope.offers = snapshot.val(); 
$scope.$apply(); 
+0

非常感謝您的快速響應。它的工作正常。但是如果$ scope不可用呢?例如在服務也有一些地方我這樣獲取數據?如何使用$ scope。$ apply();那裏?? –

+0

@DeveshAgrawal如果你把它綁定到一個視圖上,你應該使用$ scope變量! ,在服務中你必須使用當地的可變因素並且分配給他們 – Sajeetharan

+0

不是真的。在服務中,我正在像這樣分配。 ProductService.Products = snapshot.val();並在控制器中我使用相同的參考變量。像這樣:: this.ProductService = ProductService; –