2013-08-04 47 views
0

在angularjs中,通常在然後承諾的方法,你需要做一些更改的範圍,這需要你的代碼包裝在一個$ scope。 )。 我想知道是否和如何承諾可以擴大到提供thenapply功能,這將不要求你了做包裝,所以不是angularjs擴展承諾,然後應用

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

你可以寫:

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

回答

0

如果myPromise是有角度的$q承諾您不需要撥打$scope.$apply作爲then回調在角度「世界」中執行,並且範圍更改傳播到所有「觀察者」。

當然,我認爲你解決你的承諾在角度美元消化週期。如果沒有,您在解決承諾時需要致電$apply

如果myPromise是不同的承諾實現,那麼您總是需要調用$ scope。$ apply來解析它,就像在角度'world'之外完成任何其他操作一樣,因爲角度對它沒有任何瞭解。

我不會增加thenapply方法答應爲我鼓勵與角工作的不良作風,只需添加$apply調用的地方在那裏你解決的承諾,如果是外面的角$消化週期。

+0

這是一個jQuery的承諾,即來自信號庫。所以我無法控制它。 – rekna

+0

角向許諾轉換器的jquery可能是解決方案,但它不知道如何編寫代碼。然後可以寫:.convert(jqueryPromise).then(function(){....}) – rekna