Angular pass延迟从服务到控制器的错误

时间:2014-10-07 18:11:52

标签: javascript angularjs

在我的角度应用程序中,我有一个控制器。控制器有一个方法,它调用名为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方法,从服务器传递数据。

1 个答案:

答案 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