2016-11-17 78 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

感谢您的回复。它有帮助。 –