Typescript微调器指令

时间:2015-10-07 14:53:42

标签: angularjs typescript promise directive

我尝试使用TYPESCRIPT实现某种类型的angularjs指令,该指令将使用布尔参数“isShow”包装每个$ http get请求,该参数将监视请求的状态并更新参数并相应地显示/隐藏html元素(不使用$ scope或$ watch。) 知道怎么做到这一点? 谢谢

2 个答案:

答案 0 :(得分:1)

使用promise disposer pattern

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