AngularJS:如何在承诺响应后更新$ scope?

时间:2015-01-08 17:31:54

标签: javascript angularjs angular-promise

免责声明:我是AngularJS的初学者。

我正在尝试在承诺返回后更新$ scope,但它不起作用。这是简化的代码:

.controller('ChooseRewardCtrl', ['$scope', ...,
                                  function($scope, ...) {

    // scope data
    $scope.points = CardModel.points;

    // function called to refresh points
    $scope.refresh_points = function() {
      return CardModel.refresh_points() // This is a promise that changes CardModel.points value
      .then(function(data){
        $scope.$apply() // Throw error (cf. above)
      })
    }
}

我得到Error: [$rootScope:inprog] $digest already in progress 我看到很多关于这个错误的帖子,但没有任何我可以直接链接到我的问题。

谢谢!

2 个答案:

答案 0 :(得分:2)

试试这个:

.then(function(data){
        $scope.points = CardModel.points;
      })

答案 1 :(得分:0)

你不需要使用$ apply()。

记录您的功能参数('数据')并查看它包含的内容。

它应该包含promise返回的值。

为您的范围变量指定适当的值。