Angular工厂成功和错误回调

时间:2015-10-04 11:56:22

标签: javascript angularjs

我已经设置了一个带有成功和错误回调的工厂。但是当我在控制器中使用它时,如果我没有定义错误回调函数,我总是需要定义成功和错误函数,它不会起作用。

如果需要使用错误回调,是否可以使错误回调。

控制器

$scope.saveUsername = function(){
    atFactory.saveUsername($scope, function(){
        // this is success
    }, function(){
        // this is error
    });
}

at.factory('atFactory', ['$http' , function ( $http ){
    var factory = {};

    factory.saveUsername = function($scope,callback){
        $scope.url = '/member/username';
        $scope.post_data = { 
            username : $scope.username
        };
        factory.doPostHttpRequest($scope).success(callback).error(callback);
    }   

    factory.doPostHttpRequest = function($scope){
        return $http({
            url : $scope.url,
            method: 'POST', 
            data: $scope.post_data
        })
    }

    return factory;

}]);

2 个答案:

答案 0 :(得分:1)

我的建议是将$http承诺返回给控制器,然后您可以调用控制器中的success()(以及error()}。

所以在你的工厂:

factory.saveUsername = function($scope){
    $scope.url = '/member/username';
    $scope.post_data = { 
        username : $scope.username
    };
    return factory.doPostHttpRequest($scope);
}

factory.doPostHttpRequest = function($scope){
    return $http({
        url : $scope.url,
        method: 'POST', 
        data: $scope.post_data
    })
}

然后在您的控制器中,您可以执行以下操作:

atFactory.saveUsername($scope)
.success(function(response) {
    // success callback (optional)
})
.error(function(error) {
    // error callback (optional)
});

答案 1 :(得分:0)

你可以使用:

if-else