更新一个更好的问题:
我能够使工厂正常运行,并使其总数脱离循环。现在,我很难在视图中显示该数字,而且每当在列表中添加/删除/更新一个新项时,都会显示该数字。
"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;
});
},当点值发生变化时,我无法将它返回到视图或更新。有人能给我指点方向吗?
发布于 2014-09-12 02:18:14
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
}
}]);https://stackoverflow.com/questions/25797871
复制相似问题