了解AngularFire扩展FirebaseArray示例?

时间:2014-12-07 21:48:26

标签: javascript angularjs firebase angularfire

我一直在努力正确实施这个,我以为我有它,但基于我做错了它的例子。你如何在控制器中使用这个工厂?预期的结果是什么?

示例:

app.factory("ListWithTotal", ["$FirebaseArray", "$firebase", function($FirebaseArray, $firebase) {
  // create a new factory based on $FirebaseArray
  var TotalFactory = $FirebaseArray.$extendFactory({
    getTotal: function() {
      var total = 0;
      // the array data is located in this.$list
      angular.forEach(this.$list, function(rec) {
        total += rec.amount;
      });
      return total;
    }
  });
  return function(listRef) {
    // override the factory used by $firebase
    **// why do listRef and ref not match here?
    //where does listRef or ref come from**
    var sync = $firebase(ref, {arrayFactory: TotalFactory});
    return sync.$asArray(); // this will be an instance of TotalFactory
  }
}]);

我已经能够使用不包含对新firebase的引用返回的扩展工厂的版本。例如:一个保持计数的待办事项列表:http://plnkr.co/edit/iAGvPHFWn2GSPGzBRpKh?p=preview

1 个答案:

答案 0 :(得分:1)

这是一个错字。它们应该都是listRefref。不是唯一的。

当ListWithTotal工厂返回一个函数时,你可以在控制器中使用它,如下所示:

.controller('MyController', function ($scope, $window, ListWithTotal) {
    var ref = new $window.Firebase("//some-url/data");
    $scope.listWithTotal = ListWithTotal(ref);
});