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

AngularJS: How to update $scope after a promise response?

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

我试图在 promise 返回后更新 $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 我看到很多关于此错误的 post,但没有什么可以直接 link 解决我的问题。

谢谢!

试试这个:

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

您不需要使用 $apply()。

记录您的函数参数 ('data') 并查看它包含什么。

它应该包含 promise 返回的值。

为范围变量分配适当的值。