2014-02-12 4 views
1

Я пытаюсь сделать так, чтобы я мог просто добавить «requestCounter» к любому контроллеру и получить значение, которое постоянно обновляется с количеством запросов. Код перехватчика работает, однако значение, предоставляемое инжектором requestCounter, всегда равно {count: 0}. Что я не понимаю!Создание службы requestCounter в angularjs

angular.module('theApp') 
    .provider('requestCounter', function ($httpProvider) { 
    this.$get = function() { 
     var activeRequests = 0; 
     var obj = {count: activeRequests}; 
     $httpProvider.defaults.transformRequest.push(function(data) { 
     activeRequests++; 
     return data; 
     }); 

     $httpProvider.defaults.transformResponse.push(function(data) { 
     activeRequests--; 
     return data; 
     }); 

     return obj; 
    }; 
    }); 

контроллер

angular.module('theApp') 
    .controller('PurchaseCtrl', function ($scope, requestCounter) { 
    $scope.requests = requestCounter; 

    }); 

разметки

<h1>There are {{requests.count}} requests loading</h1> 

ответ

0

В начале вы назначаете примитивное значение activeRequests = 0 на ваш OBJ, поэтому они не связаны друг с другом , Вы можете попробовать:

var activeRequests = {number: 0}; 
var obj = {count: activeRequests}; 

Тогда вы можете иметь свой подсчитанное число в obj.count.number

+0

Ahh, я понимаю, что я сделал неправильно. Мне просто нужно избавиться от 'activeRequests', потому что примитивы копируются по значению. 'var obj = {count: 0};', а затем в перехватчиках do 'obj.count ++' и 'obj.count -'. Спасибо! –