使用AngularJS
我无法在错误回调中访问http状态,因为它会直接跳到最后一个其他块。
我做错了什么,我该怎么做?
UserService.login($scope.credentials).$promise.then(
// success callback
function (data) {
var chars = CharacterService.getUser({name: data.username});
$rootScope.user = User.build(data, chars);
$timeout(function () {
$state.go('sheet');
});
},
// error callback
function (data, status) {
if (status == 404) {
$scope.invalidUser = true;
$scope.credentials = {};
}
else if (status == 401) {
$scope.invalidPass = true;
$scope.credentials = {};
}
else {
alert(status);
}
}
);
答案 0 :(得分:2)
好的,我已经找到了你的问题。如果您没有使用.then()
,那么您所写的内容将起作用,而.success
会返回一个新的承诺。
如果您使用了.error
和data
,那么您的代码就可以使用。
在您的情况下,您需要的所有值都在第一个function (data) {
if (data.status == 404) {
$scope.invalidUser = true;
$scope.credentials = {};
}
else if (data.status == 401) {
$scope.invalidPass = true;
$scope.credentials = {};
}
else {
alert(data.status);
}
}
参数中,因此您只需要更改为:
{{1}}