阻止Angular $ httpProvider拦截器在模板加载时触发

时间:2015-02-04 04:32:32

标签: javascript angularjs angular-promise

想要一个简单的拦截器,它将在每200个状态上触发一个日志记录方法。这很容易设置,但现在我注意到我的所有Angular模板都是通过$ httpProvider加载的,从而触发了我的200拦截器。有什么方法可以区分模板加载和实际API调用?

  $httpProvider.interceptors.push(function() {
      return {
          response: function(response) {

              if(response.status === 200) console.log(response);
              return response;
          }
      };
  });

1 个答案:

答案 0 :(得分:3)

是。您可以。在响应对象中,有一个配置对象,内部配置对象是您请求的资源的URL。所以,

 $httpProvider.interceptors.push(function() {
      return {
          response: function(response) {

                function endsWith  ( str, suffix ) {
                    return str.indexOf(suffix, str.length - suffix.length) !== -1;
                }

              if(response.status === 200 && !endsWith( response.config.url, '.html') ) console.log(response);
              return response;
          }
      };
  });