2013-08-28 2 views
5

Использование AngularJS 1.2Как транслировать с http-перехватчика?

Мой перехватчик выглядит следующим образом:

 $httpProvider.interceptors.push(['$q', '$log', '$rootScope', function ($q, $log, $rootScope) { 
      return { 
       'request': function(config) { 
        $rootScope.$broadcast('spin'); 
        console.info('request!'); 
        return config || $q.when(config); 
       }, 
... 

В моем контроллере нав (который обрабатывает и связывает загрузчик/кок к виду):

$rootScope.$watch('spin', function(event) { 
    console.info('spin'); 
    $scope.spinner++; 
}); 

Радиопередача кажется чтобы произойти только один раз в конце всех полученных ответов, хотя я вижу много запросов ! в журнале консоли.

Как я могу управлять своим глобальным счетчиком/загрузчиком?

EDIT Я хочу показать загрузчик/счетчик в моем навигаторе каждый раз, когда данные загружаются.

+0

что вы хотите достичь с помощью этого –

+0

@Ajaybeniwal редактирования: цели добавил – Tjorriemorrie

ответ

4

$watch функция не слушает для широковещательных сообщений. Он следит за изменениями в сфере применения. В этом случае вы вызываете функцию всякий раз, когда изменения $rootScope.spin, которые сразу вызываются (по умолчанию), поэтому вы получили один раз.

Функция $on - это то, что вы хотите здесь, так как это то, что будет слушать трансляцию событий.

$rootScope.$on('spin', function(msg, data) { 
    console.info('spin'); 
    $scope.spinner++; 
}); 

Я собрал полный рабочий пример, если Вам интересно:

http://codepen.io/BrianGenisio/pen/wIBHz

3

Вместо использования Бодрствующего вы должны просто использовать на в функции модуля запуска

angular.module('test',[]).run(['$rootScope' function ($rootScope) { 
    $rootScope.$on("$spin", function() { 
     // set the spinner here 
    }); 

}]); 
+0

Где я могу найти больше информация о 'run' и' $ on' и '$ broadcast'? – Tjorriemorrie

+0

http://code.angularjs.org/1.2.0rc1/docs/api/angular.Module http://code.angularjs.org/1.2.0rc1/docs/api/ng.$rootScope.Scope –

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