29

Does anyone know how you can check to see that a resource failed to be fetched in AngularJS?

For example:

//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
    }
});

Any ideas?

4

3 回答 3

49

当出现错误时,应在您的第一个回调函数之后触发一个附加回调函数。取自文档和群组帖子

$scope.word = Word.get({ id : $routeParams.id }, function() {
    //good code
}, function(response) {
    //404 or bad
    if(response.status === 404) {
    }
});
  • HTTP GET“类”操作:Resource.action([parameters], [success], [error])
  • 非 GET “类”操作:Resource.action([parameters], postData, [success], [error])
  • 非 GET 实例操作:instance.$action([parameters], [success], [error])
于 2012-07-22T09:39:49.250 回答
5

也只是为了回答@Adio 的问题。

当任何 http 响应代码被 AngularJS 视为错误时,将调用第二个回调(只有 [200, 300] 中的响应代码被视为成功代码)。所以你可以有一个通用的错误处理功能,而不关心具体的错误。那里的 if 语句可用于根据错误代码执行不同的操作,但这不是强制性的。

于 2013-02-15T09:37:24.033 回答
0

这只是为了告知。

从 Angular 1.6.x 开始,不推荐使用成功和失败。所以现在请跟随 then 和 catch 代表成功和失败。

因此,上面的代码在 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
});
于 2017-01-05T05:43:26.293 回答