我已经设置了一个带有成功和错误回调的工厂。但是当我在控制器中使用它时,如果我没有定义错误回调函数,我总是需要定义成功和错误函数,它不会起作用。
如果需要使用错误回调,是否可以使错误回调。
控制器
$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;
}]);
答案 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