我想在函數工作時使用ajax微調,但我不知道如何告訴微調器在函數完成時隱藏。角度,如何知道什麼時候完成服務
代碼工作像這樣:
- 點擊一個按鈕,微調出現,並在控制器的功能被觸發更新一些數據。
- 該函數訪問使用$ resource更新數據的服務
- 無法隱藏微調器,因爲我不知道進程何時完成。
那麼,我怎麼知道整個事情什麼時候完成,所以我可以退出顯示微調?
單擊視圖中的按鈕會觸發updateData()
。在我的控制,我有:
$scope.updateData = function() {
Data.updateData();
}
在上面提到的數據業務了updateData方法是:
updateData : function() {
API.update({
uri : 'updateData'
}, {
data : data
}, function(data) {
data = data[0];
$rootScope.$emit('Data.updateSuccess');
}, function(err) {
$rootScope.$emit('Data.updateError', err);
});
該API來自工廠擴展$資源:
.factory('API', ['$resource', function($resource){
return $resource('/location/:uri', {}, {
query : {
method : 'GET',
isArray : true
},
update: {
method: 'POST',
headers: {
'Content-Type': 'application/json'
}
},
create: {
method: 'POST',
isArray : true,
headers: {
'Content-Type': 'application/json'
}
}
});
}]);
}
起初我以爲我可以聽聽那些$發射(我也試過$廣播)在控制器與
$rootScope.$on('Data.updateSuccess', $log.log('update success'));
$rootScope.$on('Data.updateError', $log.log('update failure'));
但是當我做我每次都得到他們兩個。那麼在完成這個更新過程之後,我需要做些什麼來確定何時隱藏我的ajax spinner?
你見過這樣的:http://stackoverflow.com/a/17850865/149060 –
你或許應該返回一個承諾,而不是隻調用該函數和然後給它添加一個'.then'處理程序。 –
@BenjaminGruenbaum我將如何在我必須合作的背景下做到這一點? – Lothar