如何遍历 $firebaseArray

How to loop through $firebaseArray

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

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

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

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

但是我没有得到任何结果。

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

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

您可以使用内置的 $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();
});
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);
    })
});