问题
I created an array of users like so -
var ref = new Firebase(FIREBASE_URL + '/users');
var users = $firebaseArray(ref);
I have added objects to this and I want to loop through each of the users in this array. I know this is possible in the view using ng-repeat, but I need to do it in the controller. I have tried -
angular.forEach(users, function(user) {
console.log(user);
})
But I get no result from this.
回答1:
Users probably isn't loaded by then, so you'll need to wait for it:
var ref = new Firebase(FIREBASE_URL + '/users');
var users = $firebaseArray(ref);
users.$loaded()
.then(function(){
angular.forEach(users, function(user) {
console.log(user);
})
});
Here's the docs on it: https://www.firebase.com/docs/web/libraries/angular/guide/intro-to-angularfire.html#section-async-intro
回答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);
})
});
回答3:
You can use the built-in $list
attribute,
e.g. The below function counts users,
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;
}
});
})
and then to use it,
var userList = new Users(ref);
userList.$loaded().then(function() {
userList.getUsers();
});
来源:https://stackoverflow.com/questions/30061790/how-to-loop-through-firebasearray