Подтвердить что ты не робот

Угловой ресурс 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
    }
});

Любые идеи?

4b9b3361

Ответ 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
});