angularfire - 为什么我不能循环$ asArray返回的数组?

时间:2014-10-16 03:48:52

标签: angularjs firebase angularfire

我正在使用AngularFire 0.8

我调用了以下函数来获取数组的实例。

var test = $firebase(new Firebase(URL)).$asArray();

当我在console.log“test”时,我得到以下内容(见截图)。

enter image description here

看起来test是一个数组。但是,当我执行“console.log(test [0])”时,我得到了未定义。

为什么不测试一个带有两个元素的数组,比如console.log(test)似乎表明它应该是???

帮助!!

1 个答案:

答案 0 :(得分:4)

在加载数据之前,您最有可能在数组上调用console.log。 要访问数组中的数据,您必须等到数据加载完毕。

要在代码中执行此操作,请使用以下构造:

var test = $firebase(new Firebase(URL)).$asArray();
test.$loaded().then(function(array) {
    console.log(array[0]);
});

更新

这个答案得到了比我想象的更多的支持。当您使用AngularJS和AngularFire时,使用console.log调试加载的数据通常是一个不好的预兆。

AngularFire documentation on handling asynchronous operations现在必须说:

  

记录数据的最简单方法是使用Angular的json过滤器在视图中打印

     

{{ data | json }}

     

AngularFire告诉Angular编译器何时加载完数据,因此无需担心何时可用。