30

ユーザーがデータを更新/作成した後、ユーザーにエラー/成功メッセージを表示する必要があるのはよくあることですが、AngularJS でそれを実装するにはどうすればよいでしょうか?
コールバックを追加したいのですが、解決策が見つかりませんでした。$http.post().success().error() を使うとうまくいきますが、上位レバレッジの API $resource でできるかな。
または、ディレクティブを記述するか、$watch() を使用する必要がありますか?
事前にご協力いただきありがとうございます。

4

2 に答える 2

51

Resourceクラスからのアクションは、下位レベルの$httpサービスと同様に、成功とエラーのコールバックを渡すことができます

ドキュメントから

  • HTTP GET「クラス」アクション: Resource.action([パラメータ], [成功], [エラー])
  • GET 以外の「クラス」アクション: Resource.action([parameters], postData, [success], [error])

取得以外のアクションには、接頭辞が付いてい$ます。

だからあなたはこれを行うことができます

User.get({userId:123}, function(u, getResponseHeaders){
  // this is get's success callback
  u.abc = true;
  u.$save(function(u, putResponseHeaders) {
    // This is $save's success callback, invoke notification from here
  });
});

編集:これは以前の plunker からの別の例です。存在しない json ファイルを要求するため、get 要求は失敗します。エラー コールバックが実行されます。

someResource.get(function(data){
    console.log('success, got data: ', data);       
}, function(err){
    alert('request failed');
});
于 2012-12-13T04:47:11.977 に答える
5

$interceptors最新の AngularJS バージョンでは、 の一部である を確認できます$httpProvider

次に、送信前または応答後にすべてのリクエストを傍受できます。

angular.module('app').config(function($httpProvider){

  $httpProvider.interceptors.push(function($q) {
    return {
      'request': function(config) {
        console.log('I will send a request to the server');
        return config; 
      },

      'response': function(response) {
        // called if HTTP CODE = 2xx 
        console.log('I got a sucessfull response from server'); 
        return response;
      }

      'responseError': function(rejection) {
        // called if HTTP CODE != 2xx
        console.log('I got an error from server');
        return $q.reject(rejection);
      }
    };
  });

});

戻るconfigresponse、機能させる必要があることに注意してください。

の場合、傍受後も が機能rejectionするようにするには、延期された拒否を返す必要があります。$http.get().error()

于 2015-02-04T21:09:30.587 に答える