2017-05-22 5 views
1

Il semble être très très simple. Mais je ne peux pas le faire. Je veux juste obtenir une valeur de ma base de données Firebase dans mon contrôleur. La base de données Firebase est comme ceci:Firebase et AngularJS, Comment récupérer une valeur à partir d'un firebaseArray

users { 
    30549545 { 
     name: "Marcelo" 
     lastName: "Forclaz" 
     years: 24 
    } 
} 

Dans mon contrôleur j'ai écrit le code suivant:

app.controller('usersCtrl', function($scope, $firebaseArray) { 
    var ref = firebase.database().ref('users'); 
    $scope.userdata = $firebaseArray(ref); 
}); 

Dans le ngRepeat du code HTML l'itération fonctionne très bien. Mais je dois obtenir la valeur "années" dans mon contrôleur pour l'utiliser pour une autre commande, ¿Comment puis-je le faire? J'ai essayé de plusieurs manières déférentes mais je n'ai pas obtenu le résultat souhaité. Je me suis rendu compte que récupérer des données de la largeur de Firebase AngularJS n'est pas si facile que de faire de la largeur simple et pure JavaScript.

Répondre

1

Enfin, je l'ai!

$scope.userdata.$ref().once('value', function(snap) { 
    angular.forEach(snap.val(), function(index)) { 
     console.log(index.years) 
    } 
} 
1

Vous devez attendre jusqu'à ce que userdata chargé:

app.controller('usersCtrl', function($scope, $firebaseArray) { 
var ref = firebase.database().ref('users'); 
$scope.userdata = $firebaseArray(ref); 
$scope.userdata.$loaded() 
    .then(function(){ 
     console.log($scope.userdata); 
    }); 
}); 
+0

Ok. Mais, comment obtenez-vous la valeur "années" maintenant? J'ai écrit votre code et le journal de la console retourne l'objet entier avec les données de référence. J'ai seulement besoin de la valeur des années de lui. J'ai essayé console.log ($ scope.data.years) mais retourne undefined. –