2015-10-07 3 views
0

im пытается реализовать некоторый тип директивы angularjs с использованием TYPESCRIPT, который будет обертывать каждый запрос $ http get логическим параметром «isShow», который будет следить за состоянием запроса и обновлять параметр и отображать/скрывать html соответственно (без использования $ scope или $ watch.) Любая идея, как этого достичь? СпасибоДиректива дескриптора машинописных файлов

ответ

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 (так falsey на 0 означает сокрытие кок и более 0 для его отображения).

+1

это хороший ответ benji – phenomnomnominal

+2

@phenomnomnominal спасибо Крейг, я думал о вас, когда писал. Также с каждой минутой. –

+0

Я попробую это и дам вам обновление :) – Basilf

0

Если вы ищете один счетчик, вы можете сделать это довольно легко, привязав его ng-show (или что-то подобное) к $http.pendingRequests.length. Конечно, это предполагает, что у вас есть $http в области (или $rootScope).

+0

barasat Я не использую scope/rootscope в моем приложении вообще. thats my issue – Basilf

+0

Затем поместите его на корневой контроллер и используйте его как 'rootCtrl. $ http';) – basarat

Смежные вопросы