0

在 angularjs 中,通常需要在 promise 的then方法中对范围进行一些更改,这需要将代码包装在 $scope.$apply(...) 中。我想知道是否以及如何扩展承诺以提供 thenapply 功能,这将不再需要您进行包装,所以而不是

myPromise.then(function() { $scope.$apply(function(data) { $scope.message=data.message; }) });

你可以写:

myPromise.thenapply( function() { $scope.message=data.message; });
4

1 回答 1

0

如果myPromise是角度$q承诺你根本不需要调用$scope.$apply,因为then回调是在角度“世界”中执行的,并且对范围的更改会传播到它的所有“观察者”。

当然,我假设您在角度 $digest 周期中解决了您的承诺。如果不是,您需要$apply在解决承诺时打电话。

如果myPromise是不同的承诺实现,你总是需要在解决它时调用 $scope.$apply ,就像在 angular 'world' 之外完成的任何其他操作一样,因为 angular 对此一无所知。

我不会thenapply向 promise 添加方法,因为它会鼓励不良的 Angular 工作方式,$apply如果它在 Angular $digest 循环之外,只需在您解决 promise 的地方添加调用。

于 2013-08-04T19:33:21.647 回答