angularjs用thenapply扩展promise

时间:2013-08-04 17:50:10

标签: angularjs promise

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

myPromise.then(function() { $scope.$apply(function(data) { $scope.message=data.message; }) });
你可以写:

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

1 个答案:

答案 0 :(得分:0)

如果myPromise是有角度的$q,则您无需致电$scope.$apply,因为then回调是在角度'世界'中执行的,并且更改范围是传播到它的所有'观察者'。

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

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

我不会添加thenapply方法来承诺,因为它鼓励使用角度的坏方式,只需在你解决诺言的地方添加$apply调用,如果它在角度$ digest循环之外。< / p>

相关问题