2016-07-12 8 views
0

これは私のサービスで書いたものです。httpインターセプタをどこにどのように挿入すればいいのでしょうか?それぞれの応答をチェックアウトして、ステータスコード'25001'が含まれている場合は、ログインページにリダイレクトしてください。インターセプタを挿入または挿入する必要があります

'use strict'; 
homeApp.factory('AdminDashboardService', ['$http', '$q', function($http, $q){  
     return { 
      'response': function(response) { 
       console.log("Yes Command comes here"); 
       return response; 
      }, 

      getAllHolidays: function(monthYearArrayForHolidayList) { 
       console.log("For full list of holidays list length: "+monthYearArrayForHolidayList.length); 
       var isMonthly="no"; 
       return $http.get('/tasktrac/holiday/getHoliday/isMonthly/'+isMonthly+'/'+monthYearArrayForHolidayList) 
         .then(
           function(response){ 
            return response.data; 
           }, 
           function(errResponse){ 
            //console.error('Error while fetching holiday'); 
            return $q.reject(errResponse); 
           } 
         ); 
     }}]); 

homeApp.config(['$httpProvider', function($httpProvider) { 
    $httpProvider.interceptors.push('AdminDashboardService'); 
}]); 

マスターは

'use strict'; 
var App = angular.module('myApp',[],['ngAnimate', 'ui.bootstrap','UserValidation']); 

var homeApp = angular.module("homeApp",['ngAnimate', 'ui.bootstrap']); 

var cApp = angular.module('clientApp',['ngAnimate', 'ui.bootstrap']); 
+0

私はより多くの情報を提供することができますが、この問題を取り除くのを手伝ってください。私はこれをjQueryで実装しましたが、角度で実装することができませんでした。 – Vish

答えて

0

インターセプタはseparatetモジュールで定義されている必要がありapp.js。通常、これは既に行われているようにfactoryで行われます。インターセプタは、リクエスト前またはレスポンス後(リクエストに関する設定)に毎回実行されます。あなたの場合、それはあなたの応答の後に実行される必要があります。

homeApp.factory('AdminDashboardService', ['$http', '$q', function($http, $q) { 
    return { 
    'response': function(response) { 
     // do something on success 
     return response; 
    }, 
    } 
}]); 

あなたが今、あなたの$httpProviderにそれを追加する必要がありますそれぞれの応答であなたの迎撃火を取得します。

module.config(['$httpProvider', function($httpProvider) { 
    $httpProvider.interceptors.push('AdminDashboardService'); 
}]); 

このようにすると、各応答の後にインターセプタが起動します。インターセプタがAngularでどのように機能しているかについては、docsまたはhereで詳しく調べることができます。

+0

Hey Aer0、 "ReferenceError:module is defined" :( – Vish

+0

「module」はプレースホルダーとして見ることができます。あなたのメインのAngularファイルで '.config()'を呼び出す必要があります。私は本当に例を見てみましょう。それは、たくさんのheplをして、今後の質問にも答えてください。 – Aer0

+0

私すべての 'app'が定義されているマスターファイルの質問を更新しました。あなたは以前の投稿で、Angularの.config()を呼び出す必要があると言っていました。このファイルをメインファイルとしましたか? – Vish

関連する問題