我的app.js中有一个名为UserService的工厂,它为我做了所有用户HTTP请求。
当我尝试创建用户时,我有以下方法。
function create(user) {
return $http.post(envService.read('apiUrl') + '/auth/register', user).then(handleSuccess, handleError('Error creating user'));
}
然后在我的控制器中我做了类似的事情:
function register() {
vm.dataLoading = true;
UserService.create(vm.user).then(function successCallback(response) {
$location.path('/');
Flash.create('success', response.message);
}, function errorCallback(error) {
Flash.create('danger', error);
vm.dataLoading = false;
});
}
处理成功和错误的函数
// private functions
function handleSuccess(res) {
return res.data;
}
function handleError(error) {
return function () {
return { success: false, message: error };
};
}
但是,即使响应代码是403或导致错误的任何其他内容,它也总会进入成功回调。我在这里做错了吗?
答案 0 :(得分:0)
在Angular JS中,当您为' $ http'提供回调函数时,您可以选择不将参数设置为
等函数$http.get('/someUrl', config).then(successCallback, errorCallback);
或者你在其中提供回调函数,如
$http({
method: 'GET',
url: '/someUrl'
}).then(
function successCallback(response) {},
function errorCallback(response) {}
);
另一方面,如果您确实想在回叫中调用自己的功能,可以选择这种方式,
$http(
{
method: this.url.method,
url: serviceURL,
}
).
success(function(data, status, headers, config) {
successCallback(data, status, headers, config);
}).
error(function(data, status, headers, config) {
errorCallback(data, status, headers, config);
});
所以,基本上你的回调函数需要一个'响应'包含
的参数在你的代码中,我会改变
handleError('Error creating user')
带有一些正确的回调,并在回调中接收该对象。
要详细了解,请阅读this