29

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

何か案は?

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の質問にも答えるだけです。

2番目のコールバックは、http応答コードがAngularJSによってエラーであると見なされたときに呼び出されます([200、300]の応答コードのみが成功コードと見なされます)。したがって、一般的なエラー処理機能を使用でき、特定のエラーを気にする必要はありません。そこにあるifステートメントは、エラーコードに応じてさまざまなアクションを実行するために使用できますが、必須ではありません。

于 2013-02-15T09:37:24.033 に答える
0

これはただ知らせるためです。

Angular 1.6.x以降、成功と失敗は非推奨になりました。だから今、その時に従って、成功と失敗に代わってキャッチしてください。

したがって、上記のコードはAngular1.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 に答える