更新更好的问题:
我能够让工厂正常运行并让它在循环中总数。现在我无法在视图中显示该号码,并且每次在列表中添加/删除/更新新项目时都会显示该号码。
“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;
});
},
我无法将此值返回到视图或更新点值时更新。有人可以提供一些方向吗?
答案 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
}
}]);