2016-04-15 14 views
1

我有一个AngularJS HTTP拦截:为什么我的AngularJS HTTP拦截器的请求函数被调用了很多次?

$httpProvider.interceptors.push([ 
    "$rootScope", "$q", "$location", 
    function ($rootScope, $q, $location) { 

     return { 
      'request': function (config) { 
       var loc = $location.path(); 
       console.log("path: " + loc); 
       .... 
       .... 
       return config; 
      }, 
      ... 
      }; 
     } 
    ]); 

我作出这样的返回的25个项目的数组的呼叫。这些项目使用ng-repeat填充到html中。该显示会导致对请求功能的75个调用。

任何人都可以解释为什么它会对一个HTTP请求进行如此多的调用吗?

感谢您的任何帮助。

回答

2

http拦截器被请求为请求角度,不只是数据请求。所以模板请求也可以解释为什么它如此之高。


更新:过滤掉模板我总是使用下面的函数。

function isLocalUrl(url) { 
    return !(url.indexOf('http://') === 0 || url.indexOf('https://') === 0); 
} 

,并调用它像这样:

return { 
    'request': function (config) { 
     if(isLocalUrl(config.url)) 
      return config; 
    } 
} 
+0

这可以解释它;是否有任何建立的模式来解决这个问题,并将检查限制在数据请求中? – Sako73

+0

@ Sako73检查我更新的答案 –