2016-08-13 142 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; –