2016-04-28 16 views
0

Ich habe ein Problem mit der Suche nach einer Lösung über meine $ httpProvider in AngularJS. Ich habe einen Accessservice, den ich antworte Antwort vom Server, kann dieser Service 401.404 .. http Fehler behandeln und eine Umleitung auf eine Seite vornehmen.

Aber ich habe eine spezifische URL, die ich diesen AccessService nicht anwenden werde. Wie kann ich damit umgehen?

config.js:

$httpProvider.interceptors.push('MyService'); 

MyServices:

angular.module('myapp').factory('MyService', function ($q, $location) { 
return { 
    responseError: function (rejection) { 
     var code = rejection.status; 

     if (code === 401) 
      $location.url('/auth'); 

     if (code === 403) 
      $location.url('/unauthorized'); 

     return $q.reject(rejection); 
    } 
}; 
}); 

in My Controller:

$scope.sendForm = function(){ 

    CustomService.posting($scope.form).then(function(data){ 
     if(data.status == 200){ 
       // code when 200 
       // no problem here 
     } 

     if(data.status == 415) 
      // line of code 
     if(data.status == 401) 
      // line of code 

    }); 
}; 

Es gibt einen Weg, um diese Abfangjäger für einen bestimmten Controller oder eine HTTP-Anforderung deaktivieren .?

Vielen Dank im Voraus!

+0

In AccessService, überprüfen Sie die URL, und nichts tun, wenn es diese bestimmte URL ist. –

+0

Wie? diese Zeile $ httpProvider.interceptors.push ('AccessService'); is whiten in config.js – mesmed

+0

Wie gesagt: ** In AccessService **. Nicht im Code, der es den Abfangjägern hinzufügt. –

Antwort

0

Dies ist sicherlich möglich, Sie müssen nur Ihre if in mehr bedingte Logik zu wickeln.

if (rejection.config.url.match(/*regextomatchroute*/) { 
    //handle the match 
} else { 
    // your current ifs 
} 
Verwandte Themen