2016-07-01 119 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; }); 
})..... 

現在我需要添加錯誤處理(例如,顯示一個警告框)的錯誤情況,例如,沒有網絡,網絡服務故障等,如何添加代碼來處理這些錯誤?

+0

'then'函數的第二個參數是錯誤回調!你是這個意思嗎 ? –

+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

我可以在'angular.module('app',['ionic','app.controllers','app.routes','app.services','app.directives'))中添加Interceptors設置代碼。 .run(函數($ ionicPlatform,$ ionicPopup)$ ionicPlatform.ready(function(){..../* insert here?*/....}'? – ca9163d9

+0

是的,當然可以; )'angular.module('app',['ionic','app.controllers','app.routes','app.services','app.directives'])。run(...)。config( ...' –

+0

謝謝,當我有機會時,我會試一試。 – ca9163d9