2014-10-09 52 views
1

在角火种子教程阶段并试验消息和子帖子时,出于某些奇怪的原因,我无法在明确尝试显示它们时看到孩子,但可以在看到它时看到它扩展控制台中的父节点。这些消息在我有ng重复的html中正确显示,所以我知道我至少得到了这些消息,尽管没有孩子。试图从Firebase获取子女记录

我想angularfire种子utils的可能被切碎或切片的一些孩子,让我恢复了直火力

这是我有:提前

Code: 
----- 
var url = fbutil.ref() + "/messages/"; 
var ref = new Firebase(url); 

var sync = $firebase(ref).$asArray(); 

console.log(sync);   //this I can see as a proper $firebaseArray object 
console.log(sync.length); //this displays as 0 even though length is 3 in object above 
console.log(sync[1]);  //displays as undefined 

Data: 
---- 
messages/id1/text 
     /id2/text 
     /id2/post 
     /id3/text 

感谢您指出我是错-假设 !

回答

2

你似乎正在为共同的异步问题而堕落。

这是你的代码片段:

var sync = $firebase(ref).$asArray(); 

console.log(sync);  //this I can see as a proper $firebaseArray object 
console.log(sync.length); //this displays as 0 even though length is 3 in object above 
console.log(sync[1]);  //displays as undefined 

$asArray()调用不会立即返回火力地堡阵列,因为数据可能需要一段时间,从火力地堡服务器回落。因此,它会返回一个Firebase阵列的承诺,它将来会包含您的数据。

当您在控制台中检查出console.log(sync)时,数据将会下载,因此它(如您所说)是一个正确的同步数组。但是当console.log(sync.length)行运行时,数据可能还没有下载。

您可以等待使用$loaded()方法下载数据。所以:

var sync = $firebase(ref).$asArray(); 

console.log(sync); 
sync.$loaded().then(function(sync) { 
    console.log(sync.length); 
    console.log(sync[1]);  
} 
0

得到了AngularFire Accessing child element methods

简短的回答了答案:一次分配给JS变种,它是一个POJO,而不是一个$火力对象了。

+0

很好,你发现我的答案有帮助,但我不认为这是你的问题的原因。我也会在这里写一个答案。 – 2014-10-09 11:28:07