2015-05-05 16 views
8

ho creato una vasta gamma di utenti in questo modo -

var ref = new Firebase(FIREBASE_URL + '/users'); 
var users = $firebaseArray(ref); 

Ho aggiunto gli oggetti a questo e voglio ciclo attraverso ciascun utente in questo array. So che questo è possibile nella vista usando ng-repeat, ma ho bisogno di farlo nel controller. Ho provato -

angular.forEach(users, function(user) { 
    console.log(user); 
}) 

Ma non ottengo risultato da questo.

+1

Vedi http://stackoverflow.com/questions/27049342/asynchronous-access-to-an-array -in-Firebase/27050749 # 27050749. Notate anche il secondo frammento di questa pagina di documentazione: https://www.firebase.com/docs/web/libraries/angular/guide/intro-to-angularfire.html#section-async-intro in quanto mostra il modo migliore per dati di debug caricati in un contesto AngularJS/Firebase: '

{{ data | json }}
'. 'console.log' non è il tuo migliore amico qui. –

+1

Spiegato nella prima pagina della guida angolare e chiesto almeno dieci volte qui su Stack Overflow. – Kato

risposta

29

utenti probabilmente non viene caricato da allora, quindi è necessario aspettare che:

var ref = new Firebase(FIREBASE_URL + '/users'); 
var users = $firebaseArray(ref); 

users.$loaded() 
    .then(function(){ 
     angular.forEach(users, function(user) { 
      console.log(user); 
     }) 
    }); 

Ecco la documentazione su di esso: https://www.firebase.com/docs/web/libraries/angular/guide/intro-to-angularfire.html#section-async-intro

+0

Ha funzionato, grazie! –

+1

Felice di aiutare, non dimenticare di accettare la risposta e aumentarla. –

+0

Ho accettato la risposta, ma sfortunatamente non ho avuto un rappresentante sufficiente per l'upvote –

0

È possibile utilizzare l'attributo built-in $list ,
ad es. La funzione qui sotto conta gli utenti,

app.factory("Users", function($firebaseArray) { 
    return $firebaseArray.$extend({    
    getUsers: function() { 
     var user_count = 0; 
     angular.forEach(this.$list, function(user) { 
     user_count += 1; 
     console.log(user); 
     }); 
     return user_count; 
    } 
    }); 
}) 

e poi di usarlo,

var userList = new Users(ref); 
userList.$loaded().then(function() { 
    userList.getUsers(); 
}); 
+0

Si noti che @ArupSaha è [estendendo il servizio $ firebaseArray] (https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-extending-the-services) in questa risposta. L'esempio è derivato dalla [documentazione per '$ firebaseArray. $ Extend'] (https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-extending-the-services-firebasearrayextend) . –

2
var fbref = new Firebase(FIREBASE_URL + '/customers'); 
customers = $firebaseArray(fbref); 

customers.$loaded() 
.then(function(data){ 
    angular.forEach(data, function(value, key) { 
     console.log('key='+key+', value='+value); 
    }) 
}); 
Problemi correlati