如何使用firebase和angularfire从数组中的对象总计值?

时间:2014-09-11 22:20:23

标签: javascript angularjs firebase angularfire

更新更好的问题:

我能够让工厂正常运行并让它在循环中总数。现在我无法在视图中显示该号码,并且每次在列表中添加/删除/更新新项目时都会显示该号码。

“ListWithTotal”工厂的工作方式与文档中的完全相同。我没有正确设置ref变量。

以下是最新的相关代码:

//controller
$scope.total = TodoService.getTotalPoints();

//service
var todos = $firebase(ref, {arrayFactory: "ListWithTotal"}).$asArray();

  return {
    getTotalPoints:function(){
         todos.$loaded().then(function() {
        total = todos.getTotal();
        console.log(total);
        return total;
      });
    },

我无法将此值返回到视图或更新点值时更新。有人可以提供一些方向吗?

1 个答案:

答案 0 :(得分:3)

AngularFire指南涵盖了the section on extending factories中的这个确切示例。

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
    var sync = $firebase(ref, {arrayFactory: TotalFactory});
    return sync.$asArray(); // this will be an instance of TotalFactory
  }
}]);