2016-11-17 4 views
1

私のアプリケーションは角度で80%、jqueryで20%書かれています。私は$ httpproviderを使ってリクエストインターセプタを角度で書いており、他の角ページでうまく動作しています。 私は3つの質問を持っています:jqueryページからangle requestインターセプターを呼び出します。

1)jqueryのページに同じインターセプターを使いたいです。どうすればこれを達成できますか?

2)インターセプタをページロード時に1回だけ呼び出すようにしたい。どうすればこれを達成できますか?それは現在、7〜8回呼び出されています(私は完全なページの読み込み中にajax呼び出しの数を推測します)。

3)このインターセプターとこのインターセプターを使用するページのジャスミン仕様を書く方法を教えてください。 ありがとうございます!

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)あなたは$httpまたは$resourceを通じてXHR-呼び出しを行う角度サービスを呼び出す必要があるでしょう、あなたの$httpProviderインターセプタによって傍受レガシーコードから、あなたのXHR呼び出しを持っています。

Se thisレガシーコードから角度サービスを呼び出す方法については、こちらをご覧ください。

2)角度インターセプタは、リクエストごとに呼び出される必要があります。ページの読み込み時に一度しか呼びたくないのであれば、インターセプターは正しい選択ではありません。より良いオプションは、サービスでページロード時にリクエスト+ロジックを行い、それをルータ状態のresolveプロパティとして持つことです。

3)jasmineで$ httpBackendを使用して$httpコールをモックし、傍受者が行うべきことが何であれ、seを使用します。

+0

返信いただきありがとうございます。それは助けになった。 –

関連する問題