Voici le code que j'utilise pour interroger mon firebase à la recherche de joueurs dont ids correspondent aux numéros dans un tableau:mise à jour du résultat d'une fonction en temps réel
.controller('mySquadCtrl', ['$scope','$location','$firebaseArray','$firebaseAuth','CommonProp', 'DatabaseService',
function($scope,$location,$firebaseArray,$firebaseAuth,CommonProp, databaseService){
var uid = CommonProp.userUid();
$scope.uid = uid;
$scope.username = CommonProp.getUser();
if(!$scope.username){
$location.path('/welcome');
}
databaseService.users.child(uid).once('value', function(usersSnapshot){
var users = usersSnapshot.val();
var total = users.total;
var team = users.teamname;
$scope.pick = total;
var orderedPlayers = databaseService.players.orderByChild("id");
$firebaseArray(orderedPlayers)
.$loaded(function(loadedPlayers) {
var normalizedPlayers = loadedPlayers.reduce(function(acc, next) { acc[next.id] = next; return acc; }, {});
var selectedPlayers = $scope.pick.map(function(num){
return normalizedPlayers[num];
});
$scope.players = selectedPlayers;
$scope.sum = function(items, prop){
return items.reduce(function(a, b){
return a + b[prop];
}, 0);
};
$scope.totalPoints = $scope.sum($scope.players, 'goals');
$scope.teamname = team;
}, function(err) {
console.log(err);
$scope.players = [];
});
});
$scope.logout = function(){
CommonProp.logoutUser();
};
}]);
Si l'utilisateur n'est pas connecté, la page les redirige vers la page d'accueil.
Mon problème est que le résultat $scope.totalPoints
ne se met pas à jour en temps réel même si la valeur "objectif" $scope.players
le fait lorsque je le modifie directement dans la base de données.
Y at-il un moyen de faire la mise à jour $scope.totalPoints
en temps réel que je change les valeurs aux valeurs $scope.players
dans la base de données?
Je ne comprends pas comment $ extend fonctionne. Tous les exemples l'utilisent dans une usine. Comme je n'ai pas d'usine dans mon code, cela signifie-t-il que je dois créer une fabrique avant que la fonction $ scope.totalPoints ne se mette à jour? –
Oui. C'est en effet ce que l'exemple fait. –