AngularJS:扩展工厂内的$ http成功查询不更新变量

时间:2015-04-06 12:30:50

标签: angularjs

我正在做这样的工厂: (简化版)

module.factory("$list", function($http, $env) {
  var service =  function() {
    this.items = [];
    this.count = 0;

    this.updateCount = function() {
      var self = this;
      $http.head($env.host + '/path/to/resource')
      .success(function(data, status, headers, config) {
        self.count = headers()['x-total-count']
      });
    };
  };
  updateCount(); //this doesn't update the count value

  return service;
});

然后我用它来扩展模型工厂:

module.factory("Model", function($resource, $http, $list, $env) {
  angular.extend(Model, $resource(
    $env.host + '/base/path/:id',
    {id: "@id"},
    { }
  ));
  angular.extend(Model, $list);
  Model.updateCount(); // this updates the count value
};

然后我的控制器正在使用它:

angular.module('my_module').controller('MyController', function($scope, Model){
  $scope.model = Model;
}

我可以使用所有$resource个功能,但$list的第二个范围会返回成功后未更新的计数,并且似乎无法观看。

如何确保我的$ list扩展变量在成功时正确更新并在主工厂内看到?

更新1:

我已更新$list工厂。

动态更新和监视计数值的唯一方法是在扩展工厂内调用count()方法,而不是$list工厂。我不知道为什么它在$list工厂内无效。

0 个答案:

没有答案