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

标签 javascript angularjs firebase angularfire

更新一个更好的问题:

我能够让工厂正常运行并使其总数脱离循环。现在,我很难让该数字显示在 View 中,并且每次在列表中添加/删除/更新新项目时都无法显示该数字。

“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;
      });
    },

当点值发生变化时,我无法将总计返回到 View 或更新。有人可以提供一些指导吗?

最佳答案

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
  }
}]);

关于javascript - 如何使用 firebase 和 angularfire 计算数组中对象的总值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25797871/

相关文章:

javascript - 将 a href 样式化为按钮

javascript - 如何在nodejs中指定文件类型包含 '.'的字段名称?

c# - ASPxCombobox,允许用户输入和下拉选择

javascript - 如何在 chrome headless+puppeteervaluate() 中使用 xpath?

javascript - Firebase实时数据库: how to check if child value exists

javascript - ui-router 嵌套 View 和传递变量

javascript - 在 AngularJs 中获取文本区域光标位置

c# - 使用 AngularJs 从数据库中检索和过滤数据

ios - Swift & Firebase - 进一步添加 "headers"

javascript - 我正在尝试将使用过的 UID 添加到实时数据库中?