我在AngularJS空間初學者和創建我的第一個應用程序,並在一個地步,我需要做的一些東西,如顯示發送XHR請求,並再次之前裝載機發生前做的東西收到回覆時將其隱藏起來。
我試着用google搜索它,發現攔截器的東西在AngularJS中有請求和響應XHR,但是這樣做會對每個XHR請求都有效,我只想在我的登錄控制器中進行操作。
更新:我正在尋找一些jQuery的像beforeSend和ajaxcomplete喜歡回調。
我在AngularJS空間初學者和創建我的第一個應用程序,並在一個地步,我需要做的一些東西,如顯示發送XHR請求,並再次之前裝載機發生前做的東西收到回覆時將其隱藏起來。
我試着用google搜索它,發現攔截器的東西在AngularJS中有請求和響應XHR,但是這樣做會對每個XHR請求都有效,我只想在我的登錄控制器中進行操作。
更新:我正在尋找一些jQuery的像beforeSend和ajaxcomplete喜歡回調。
沒有什麼奇特的需要。
$scope.loading = true;
$http.get(...)
.success(function() {
$scope.loading = false;
});
入住此琴,請http://jsfiddle.net/2r88Ljer/4/
<div ng-app>
<div ng-controller="Ctrlr">
<a href="" ng-click="login()">Login</a>
<i class="fa fa-spinner fa-spin" ng-show="loading"></i>
</div>
<div ng-controller="anotherCtrl">
<a href="" ng-click="fetch()">Get Some Other Data</a>
<i class="fa fa-spinner fa-spin" ng-show="loading"></i>
</div>
</div>
,並在你的JavaScript補充:
function Ctrlr($scope,$timeout,$http){
$scope.loading=false;
$scope.login= function(){
$scope.loading=true;
$http.get("/echo/json/").success(function() {
$timeout(function(){
$scope.loading = false;
},2000);
});
}
}
function anotherCtrl($scope,$timeout,$http){
$scope.loading=false;
$scope.fetch = function(){
$scope.loading=true;
$http.get("/echo/json/").success(function() {
$timeout(function(){
$scope.loading = false;
},1000);
});
}
}
我已經創建瞭如何顯示和隱藏加載的功能演示時,您的請求開始並完成並將適用於您想要的控制器。我使用font awesome作爲加載圖標(爲簡單起見),但您可以使用任何您想要的(img,gif等)。
希望它可以幫助
嗯,不錯的技巧,但我一直在尋找一些jQuery的像beforeSend和ajaxcomplete喜歡回調。 – AngularLearner
這不是一個「訣竅」。這正是這個代碼所做的。執行'$ scope.loading = true;'_before_發送請求,'$ scope.loading = false;''成功'(相當於「ajaxcomplete」)。即使'$ http.get'上有'.before()'方法,你是否仍然需要在'$ scope'中設置一些你可以綁定到HTML中的東西? –