【问题标题】:Creating a requestCounter service in angularjs在 angularjs 中创建 requestCounter 服务
【发布时间】:2014-02-13 04:42:19
【问题描述】:

我正在努力做到这一点,以便我可以将“requestCounter”添加到任何控制器并获得一个随着请求数量不断更新的值。拦截器代码正在工作,但是注入 requestCounter 提供的值始终为{count: 0}。我不明白什么!

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>

【问题讨论】:

    标签: angularjs angular-http-interceptors


    【解决方案1】:

    在开始时,您将 activeRequests = 0 的原始值分配给您的 obj,因此它们不会相互链接。你可以试试:

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

    那么你就可以在 obj.count.number 中得到你的计数了

    【讨论】:

    • 啊,我明白我做错了什么。我只需要摆脱activeRequests,因为原语是按值复制的。 var obj = {count:0}; 然后在拦截器中执行 obj.count++obj.count--。谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-08-28
    • 2014-05-18
    • 1970-01-01
    • 1970-01-01
    • 2017-12-05
    • 2014-05-16
    相关资源
    最近更新 更多