搜尋

首頁  >  問答  >  主體

angular.js - angularjs中的攔截器會攔截哪些請求?

在angularjs中加入攔截器,發現$http發出的請求會攔截,但$window.location.href確不會攔截,想請問一下攔截器是不是只攔截$http發出的請求?

滿天的星座滿天的星座2824 天前797

全部回覆(4)我來回復

  • 为情所困

    为情所困2017-05-15 17:15:17

    官方文件解釋的比較清楚,也有例子
    https://docs.angularjs.org/ap...$http

    // register the interceptor as a service
    $provide.factory('myHttpInterceptor', function($q, dependency1, dependency2) {
      return {
        // optional method
        'request': function(config) {
          // do something on success
          return config;
        },
    
        // optional method
       'requestError': function(rejection) {
          // do something on error
          if (canRecover(rejection)) {
            return responseOrNewPromise
          }
          return $q.reject(rejection);
        },
    
    
    
        // optional method
        'response': function(response) {
          // do something on success
          return response;
        },
    
        // optional method
       'responseError': function(rejection) {
          // do something on error
          if (canRecover(rejection)) {
            return responseOrNewPromise
          }
          return $q.reject(rejection);
        }
      };
    });
    
    $httpProvider.interceptors.push('myHttpInterceptor');
    
    
    // alternatively, register the interceptor via an anonymous factory
    $httpProvider.interceptors.push(function($q, dependency1, dependency2) {
      return {
       'request': function(config) {
           // same as above
        },
    
        'response': function(response) {
           // same as above
        }
      };
    });

    回覆
    0
  • 高洛峰

    高洛峰2017-05-15 17:15:17

    跳到新的頁面不執行攔截器中的程式碼

    回覆
    0
  • 怪我咯

    怪我咯2017-05-15 17:15:17

    我記得是html 與 介面請求,之前console.log過

    回覆
    0
  • 曾经蜡笔没有小新

    曾经蜡笔没有小新2017-05-15 17:15:17

    所謂 $window 其实是对浏览器 window 物件的​​引用的二次包裝,那為什麼會有這個東東呢?目的主要是為了程式碼可測試性。

    所以,結論是這玩意跟 $http 一點關係都沒有,自然也不會走攔截器

    當然,我還是挺懂題主,無非就是希望在做跳轉時做一些額外的事情。這個問題,只能從路由方面去解決了。

    以上!

    回覆
    0
  • 取消回覆