2016-07-01 22 views
0

私はすべてのngResourceサービスがデータを取得する以下のコントローラを持っています。

.controller('venueCtrl', function ($scope, $stateParams, VenueService) { 
    $scope.venue = VenueService.get({ id: $stateParams.id }); 
}) 
.controller('tomorrowCtrl', function ($scope, EventService) { 
    var evts = EventService.query({ period: "Tomorrow" }); 
    evts.$promise.then(function (response) { $scope.events = response; }); 
})..... 

は今、私はエラーを処理するコードを追加する方法など、例えば、何のネットワーク、Webサービスが失敗していない、エラー状態のために(例えば、警告ボックスを表示)エラー処理を追加する必要がありますか?

+0

'then'関数の2番目のパラメータはエラーコールバックです!それはあなたが意味することですか? –

+0

最初の 'GET'はどうですか? – ca9163d9

+0

すべてのリソースインスタンスとコレクションには '$ promise'プロパティがあります。 –

答えて

1

あなたはInterceptorsをこのように使用することができます。

angular.module('ngRessourceErrorsHandler', []) 
.config(function($resourceProvider) { 
    angular.forEach($resourceProvider.defaults.actions, function(action) { 
     action['interceptor'] = { 
      responseError: function(httpResponse) { 
       //Do whatever you want here ! 
      } 
     }; 
    }) 
}); 

これを試してみて、これはあなたのために働く場合は私に知らせてください。あなたのモジュールにngRessourceErrorsHandler依存関係を追加することを忘れないでください。あるいは、configを直接使用してください。

+0

Interceptorsセットアップコードを 'angular.module( 'app'、['ionic'、 'app.controllers'、 'app.routes'、 'app.services'、 'app.directives']に追加できますか? .run(function($ ionicPlatform、$ ionicPopup){ $ ionicPlatform.ready(function(){..../*ここに挿入しますか?*/....} '? – ca9163d9

+0

はい、もちろん可能です。 ) '(' app '、[' ionic '、' app.controllers '、' app.routes '、' app.services '、' app.directives '])を実行します。 ... –

+0

ありがとう。私はチャンスがあるときに試してみる。 – ca9163d9

関連する問題