如何遍历$ firebaseArray

时间:2015-05-05 19:37:50

标签: angularjs firebase angularfire

我创建了一个像这样的用户数组 -

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

我已经添加了对象,我想循环遍历此数组中的每个用户。我知道在使用ng-repeat的视图中这是可能的,但我需要在控制器中执行此操作。我试过了 -

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

但我没有得到任何结果。

3 个答案:

答案 0 :(得分:29)

当时用户可能尚未加载,因此您需要等待它:

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

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

以下是关于它的文档:https://www.firebase.com/docs/web/libraries/angular/guide/intro-to-angularfire.html#section-async-intro

答案 1 :(得分: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);
    })
});

答案 2 :(得分:0)

您可以使用内置的$list属性,
例如以下功能对用户进行计数,

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;
    }
  });
})

然后使用它,

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