How to loop through $firebaseArray

会有一股神秘感。 提交于 2019-12-29 06:50:52

问题


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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!