2015-05-05 17 views
8

Tôi tạo ra một mảng của người sử dụng như vậy -

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

Tôi đã thêm các đối tượng này và tôi muốn để lặp qua từng người dùng trong mảng này. Tôi biết điều này là có thể trong xem bằng cách sử dụng ng-lặp lại, nhưng tôi cần phải làm điều đó trong bộ điều khiển. Tôi đã thử -

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

Nhưng tôi không nhận được kết quả nào từ việc này.

+1

Xem http://stackoverflow.com/questions/27049342/asynchronous-access-to-an-array -in-firebase/27050749 # 27050749. Nhưng cũng lưu ý đoạn thứ hai trên trang tài liệu này: https://www.firebase.com/docs/web/libraries/angular/guide/intro-to-angularfire.html#section-async-intro vì nó cho thấy cách tốt nhất để dữ liệu gỡ lỗi được tải trong ngữ cảnh AngularJS/Firebase: '

{{ data | json }}
'. 'console.log' không phải là người bạn tốt nhất của bạn ở đây. –

+1

Giải thích trong trang đầu tiên của hướng dẫn Góc và hỏi ít nhất mười lần ở đây trên Stack Overflow. – Kato

Trả lời

29

Người dùng có thể không được nạp bởi sau đó, vì vậy bạn sẽ cần phải chờ cho nó:

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

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

Dưới đây là các tài liệu về nó: https://www.firebase.com/docs/web/libraries/angular/guide/intro-to-angularfire.html#section-async-intro

+0

Nó hoạt động, cảm ơn bạn! –

+1

Rất vui khi được giúp đỡ, đừng quên chấp nhận câu trả lời và upvotr nó. –

+0

Tôi chấp nhận câu trả lời, nhưng tiếc là không có đủ đại diện để upvote –

0

Bạn có thể sử dụng được xây dựng trong $list thuộc tính ,
ví dụ: Hàm dưới đây đếm người dùng,

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

và sau đó sử dụng nó,

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

Lưu ý rằng @ArupSaha đang [mở rộng dịch vụ firebaseArray $] (https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-extending-the-services) trong câu trả lời này. Ví dụ này bắt nguồn từ [tài liệu cho '$ firebaseArray. $ Extend'] (https://www.firebase.com/docs/web/libraries/angular/api.html#angularfire-extending-the-services-firebasearrayextend) . –

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); 
    }) 
}); 
Các vấn đề liên quan