2016-11-17 77 views
1

我的應用程序是80%寫在角度和20%的jQuery中。我已經使用$ httpprovider以角度編寫了一個請求攔截器,並且與其他角頁面一起工作良好。 我有三個問題:從jquery頁面調用角度請求攔截器

1)我想爲我的jquery頁面使用相同的攔截器。我怎樣才能做到這一點?

2)我希望我的攔截器只能在頁面加載時調用一次。我怎樣才能做到這一點?它目前被調用7-8次(我猜在完成頁面加載期間調用ajax的次數)。

3)有人可以給我輸入我怎麼可以爲這個攔截器和使用這個攔截器的頁面編寫jasmine spec。 在此先感謝!

app.config(['$httpProvider', function ($httpProvider) { 
 
'use strict'; 
 
$httpProvider.interceptors.push('myAppInterceptor'); 
 
}]); 
 

 

 

 

 
app.factory('myAppInterceptor', ['$q','$window','$injector',function ($q,$window,$injector) { 
 
     'use strict'; 
 
     var myAppInterceptor = { 
 
      request: function(config) { 
 

 
       console.log('myAppInterceptor is called'); 
 
       // some business logic done here... 
 
       } 
 
       return config; 
 
      } 
 
     }; 
 
     return myAppInterceptor; 
 
}]);

回答

1

1)有從您的$httpProvider攔截器攔截你的遺留代碼的XHR調用你需要調用的角度服務,使通過$http$resource的XHR呼叫。

se this有關從傳統代碼調用角度服務的信息。

2)角攔截器需要在每個請求上調用。如果你只想在頁面加載時調用一次,攔截器並不是正確的選擇。更好的選項會使服務在頁面加載時所需的請求+邏輯成爲您的路由器狀態的resolve屬性。

3)在jasmine中使用$ httpBackend來模擬$http調用和se如果攔截器執行它應該做的任何事情。

+0

感謝您的回覆。它有幫助。 –