【问题标题】:How to loop through $firebaseArray如何循环通过 $firebaseArray
【发布时间】:2015-07-15 16:58:57
【问题描述】:

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

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

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

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

但我没有得到任何结果。

【问题讨论】:

标签: angularjs firebase angularfire


【解决方案1】:
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】:

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

    【讨论】:

    【解决方案3】:

    到那时用户可能还没有加载,所以你需要等待它:

    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

    【讨论】:

    • 很高兴为您提供帮助,不要忘记接受答案并支持它。
    • 我接受了答案,但遗憾的是没有足够的代表来投票
    猜你喜欢
    • 1970-01-01
    • 2015-08-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-20
    相关资源
    最近更新 更多