2014-06-06 54 views
3
app.config(function(RestangularProvider) {   
    RestangularProvider.addRequestInterceptor(function(element) { 
     console.log("Request started"); 
     return element; 
    }); 

    RestangularProvider.addResponseInterceptor(function(data) { 
     console.log("Request returned"); 

     return data; 
    }); 
}); 

我想弄清楚如何爲請求發生時創建一個微調器。我懷疑這通常是通過在請求開始時顯示一個,並在請求完成時隱藏它來完成的。Restangular Spinner

我怎樣才能做到這一點與角和Restangular?我有攔截器設置如上,但這是在.conifg(),所以我不能訪問$ rootScope或任何東西來跟蹤任何div的可見性。

+0

退房這個插件:http://chieffancypants.github.io/angular-加載欄/我還沒有研究過它是如何工作的,但他幾乎接觸到了所有HTTP請求,似乎處理得很好。我的Restangular設置完美無瑕。 – jraede

+0

我知道那個插件;我不想簡單的解決......;) – Genu

回答

7

事實證明,我可以配置Restangular的run()塊裏面,讓我獲得了$rootscope像這樣:

app.run(function($rootScope, Restangular) { 
    Restangular.addRequestInterceptor(function(element) { 
     $rootScope.xhr = true; 

     return element; 
    }); 
    Restangular.addResponseInterceptor(function(data) { 
     $rootScope.xhr = false; 

     return data; 
    }); 
}); 
+0

這在加載多個資源的同時有一個bug,你需要計算請求的數量 – Blowsie

+0

@Blowsie只是檢查微調器是否已經設置爲真正不要求數! – ProllyGeek

+0

@ProllyGeek對我沒有意義,如果你有1或100個未決請求,它的設置爲true – Blowsie