繁体   English   中英

如何使用Firebase和angularfire对数组中的对象的值求和?

[英]How can I total values from an object in an array using firebase and 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;
      });
    },

当积分值更改时,我无法获得此信息以将总计返回到视图或更新。 谁能提供一些指导?

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM