Могу ли я получить то, что возвращается обновленным $$ или обновлено через $$, запустить функцию, которую я могу получить каждый раз, когда задача отключена?
В конце дня мне нужно следить за количеством заданий пользователей. Кажется, что у firebase есть способы автоматической синхронизации этих данных, но неясно, как это сделать. У меня возникли проблемы с функциями $watch и running, когда задача завершена. Это похоже на интересный способ сделать это, но я не могу собрать эти штуки.
Здесь работает plnkr кода ниже: http://plnkr.co/edit/iAGvPHFWn2GSPGzBRpKh?p=preview
// Code goes here
angular.module('app', ['firebase']);
angular
.module('app')
.controller('main', function($scope, $firebase, $timeout, $window, ListWithTotal) {
var ref = new Firebase("https://plnkr.firebaseio.com");
$scope.listWithTotal = ListWithTotal(ref);
$scope.addTask = function(task) {
$scope.listWithTotal.$add({
title: task.title,
complete: false,
tally: 0
});
task.title = '';
};
$scope.completeTask = function(task) {
if (task.complete === true) {
task.complete = true;
task.tally = 1;
} else {
task.complete = false;
task.tally = 0;
}
$scope.listWithTotal.$save(task);
};
$scope.tallyCount = '';
//it would be cool if I can get tallyCount to receive
//the result of getTotal or automagically with $$updated.
}).factory("ListWithTotal", ["$FirebaseArray", "$firebase", function($FirebaseArray, $firebase) {
// create a new factory based on $FirebaseArray
var TotalFactory = $FirebaseArray.$extendFactory({
getTotal: function() {
var total = 0;
angular.forEach(this.$list, function(rec) {
total += rec.tally;
});
return total;
},
$$updated: function(){
return this.$list.getTotal();
}
});
return function(listRef) {
var sync = $firebase(listRef, {arrayFactory: TotalFactory});
return sync.$asArray(); // this will be an instance of TotalFactory
};
}]);