2015-01-30 2 views
0

Я получаю ошибку ниже, когда пытаюсь использовать перехватчик в AngularJs, Requirejs с ui-router. Если я использую с $ routeProvider (ngRoute), работа совершенна.Не удалось создать экземпляр модуля httpProvider.responseInterceptors

Что не так с кодом?

спасибо.

Не удалось создать экземпляр модуля devWeb из-за: TypeError: Не удается прочитать свойство 'толчок' неопределенной на ResponseInterceptor

кода сделать перехват.

(function() { 
    "use strict"; 

    define(
    function() { 

     var ResponseInterceptor = function ($httpProvider) { 
      var globalResponseInterceptor = function (promise) { 

        var onSuccess = function (packet) { 

         if(angular.isString(packet.data)) { 
          return packet; 
         } 
         return packet; 
        }; 
        var onFault = function (fault) { 

         var error = angular.isDefined(fault.error) ? fault.error : 

          angular.isDefined(fault.status) ? { 
           code: fault.status, 
           message: "Unexpected Server Error" 
          } : { 
           code: "404", 
           message: "Not Found" 
          }; 
         return $$q.reject(error) ; 
        }; 
        return promise.then(onSuccess, onFault); 
      }; 
      var registerInterceptor = function (sessao, $rootScope ,$q) { 
        $$q   = $q; 
        $scope  = $rootScope; 
        errorModel = sessao.error; 

        return globalResponseInterceptor; 
      }; 

      $httpProvider.responseInterceptors.push([ "sessao", "$rootScope", "$q", registerInterceptor ]); 

     }; 

     return [ "$httpProvider", ResponseInterceptor ]; 
}); 

}()); 

Код для создания экземпляра.

define([...], 
    function (RouteManagerServico, ResponseInterceptor) { 

     var app, appName = 'devWeb'; 

     app = angular 
       .module(appName, [ "ngCookies", "ui.router", "ngRoute", "ngSanitize"]) 

       .config(RouteManagerServico) 
       .config(ResponseInterceptor) 

       .run([ "$rootScope", "$state", "$location", function($rootScope, $state, $location) { 
        $rootScope.$state = $state; 
        $rootScope.$location = $location; 
       }]); 

     angular.bootstrap(document.getElementsByTagName("body")[0], [ appName ]); 


     return app; 
    } 
); 
+2

Проблема заключается в версии 1.2 Угловое до 1,3. Перед httpProvider.responseInterceptors теперь $ httpProvider.interceptors. link docs.angularjs.org/guide/migration – alexander

ответ

Смежные вопросы