我尝试使用TYPESCRIPT实现某种类型的angularjs指令,该指令将使用布尔参数“isShow”包装每个$ http get请求,该参数将监视请求的状态并更新参数并相应地显示/隐藏html元素(不使用$ scope或$ watch。) 知道怎么做到这一点? 谢谢
答案 0 :(得分:1)
var spinnerSemaphore = 0;
function own(fn){
spinnerSemaphore++;
var res = $q.when(fn());
fn().then(function(){ spinnerSemaphore--; },
function(){ spinnerSemaphore--; });
return res;
}
可以让你这样做:
own(function(){
return $http.get(...);
});
own(function(){
return $http.get(...);
});
own(function(){
return $http.get(...);
});
own(function(){
return $timeout(...); // this also works, and anything else with promises
});
并将显示微调器的绑定设置为spinnerSemaphore
(因此0表示隐藏意味着隐藏微调器而超过0表示显示它)。
答案 1 :(得分:0)
如果您正在寻找单个微调器,您可以通过将ng-show
(或类似的东西)绑定到$http.pendingRequests.length
来轻松完成。当然,这假设您在范围($http
)中有$rootScope
。