在我的角度应用程序中,我有一个控制器。控制器有一个方法,它调用名为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
});
}
这是serviceMethod
服务中的Service
:
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
请求是返回成功还是错误,控制器中的延迟总是执行它的成功方法。我想为控制器中的延迟调用error方法,从服务器传递数据。
答案 0 :(得分:0)
我会把服务写成:
serviceMethod: function(x, y){
return $http.post('save', {
id: x, type: b
}).success(function(data){
// do things Service related when call is successful
}).error(function(data, status){
// do things error related...
})
}
然后在像这样的控制器中引用它:
Service.serviceMethod($scope.x, $scope.y).success(function(data){
// request succeeded, so do nothing
}).error(function(data, status){
// error occured, do whatever
});
这就像魅力......这是docs