Угловой ресурс GET GET
Кто-нибудь знает, как вы можете проверить, не удалось ли получить ресурс в AngularJS?
Например:
//this is valid syntax
$scope.word = Word.get({ id : $routeParams.id },function() {
//this is valid, but won't be fired if the HTTP response is 404 or any other http-error code
});
//this is something along the lines of what I want to have
//(NOTE THAT THIS IS INVALID AND DOESN'T EXIST)
$scope.word = Word.get({ id : $routeParams.id },{
success : function() {
//good
},
failure : function() {
//404 or bad
}
});
Любые идеи?
Ответы
Ответ 1
Дополнительная функция обратного вызова после первой функции обратного вызова должна срабатывать при возникновении ошибки. Взято из docs и группу post:
$scope.word = Word.get({ id : $routeParams.id }, function() {
//good code
}, function(response) {
//404 or bad
if(response.status === 404) {
}
});
- HTTP GET "class" actions: Resource.action([параметры], [успех], [ошибка])
- действия класса "не-GET": Resource.action([parameters], postData, [success], [error])
- действия экземпляра не-GET: экземпляр. $action ([параметры], [успех], [ошибка])
Ответ 2
Просто для ответа на вопрос @Adio.
Второй обратный вызов будет вызываться, когда любой HTTP-код ответа считается ошибкой AngularJS (только коды ответов в [200, 300] считаются кодами успеха). Таким образом, вы можете иметь общую функцию обработки ошибок и не заботиться о конкретной ошибке.
Оператор if может использоваться для выполнения различных действий в зависимости от кода ошибки, но не обязательно.
Ответ 3
Это только для того, чтобы сообщить.
От angular 1.6.x, успех и неудача устарели. Поэтому, пожалуйста, теперь следуйте за ним и поймите от имени успеха и неудачи.
Итак, приведенный выше код выглядит как в angular 1.6.x, как показано ниже:
$scope.word = Word.get({ id : $routeParams.id }).then(=> () {
//this is valid, but won't be fired if the HTTP response is 404 or any other http-error code
}).catch(=> () {
// error related code goes here
});