0
在我的角度應用程序中,我有一個控制器。控制器有一種在稱爲Service
的服務中調用異步功能的方法。這是控制器代碼:從服務到控制器的角度遞延錯誤
$scope.controllerMethod = function(){
Service.serviceMethod($scope.x, $scope.y).then(function(data){
//request succeeded, so do nothing
}, function(data){
//there was an error, show error message
});
}
這是Service
服務中serviceMethod
:
serviceMethod: function(x, y){
return $http.post('save', {
id: x, type: b
}).then(function(data){
//update variables in the service
}, function(data){
//send error message to controller
});
}
當Service
方法調用服務器,服務器將在必要時返回一個錯誤。我該如何將錯誤響應發送給我的控制器?使用當前設置,無論$http
請求是返回成功還是錯誤,控制器中的延遲都會執行它的成功方法。我想調用控制器中延遲的錯誤方法,從服務器傳遞數據。
曾任職太好了謝謝!但我不知道爲什麼。我認爲'.then()'只是另一種編寫'成功'和'失敗'回調的方法。任何想法爲什麼我會看到不同的行爲?它甚至在你鏈接的文檔中說:「由於調用$ http函數的返回值是一個承諾,所以你也可以使用then方法來註冊回調函數,這些回調函數將接收一個參數 - 一個代表響應的對象。 「 – flyingL123 2014-10-07 18:29:14
我真的不知道,但我瘋狂的猜測會返回一個函數的服務方法,正如我上面以某種方式暴露'成功'和'錯誤'方法的控制器。不知道... – hakazvaka 2014-10-07 18:34:57
我不確定你的意思。據我所知,在這兩種情況下,我們都是從服務方法返回推遲的。他們都返回'$ http(...)' – flyingL123 2014-10-07 18:41:30