我发现了一些类似的主题,但其中大多数已经过时,因为我正在使用angularfire 1.1.1。
我有一个AngularJS应用程序在Google地图上创建标记。数据存储在外部JSON文件中,当我将其转换为数组时,它工作得很好。当我将数据放入firebase数据库时,它停止工作。带有数据的ng指令工作得很好,但是当访问js代码中的数组数据时,它并没有真正起作用。
app.controller('MapCtrl', ['$scope', '$firebaseArray', function($scope, $firebaseArray){
var ref = new Firebase("https://radiant-inferno-6439.firebaseio.com/tracks");
var syncObject = $firebaseArray(ref);
...
使用旧的脱机JSON版本记录,syncObject如下所示:
[Object, Object, Object]
0: Object
1: Object
2: Object
length: 3
__proto__: Array[0]
但现在看起来像这样:
[]
0: Object
1: Object
2: Object
$$added: () { [native code] }
$$error: () { [native code] }
$$getKey: () { [native code] }
$$moved: () { [native code] }
$$notify: () { [native code] }
$$process: () { [native code] }
$$removed: () { [native code] }
$$updated: () { [native code] }
$add: () { [native code] }
$destroy: () { [native code] }
$getRecord: () { [native code] }
$indexFor: () { [native code] }
$keyAt: () { [native code] }
$loaded: () { [native code] }
$ref: () { [native code] }
$remove: () { [native code] }
$save: () { [native code] }
$watch: () { [native code] }
length: 3
__proto__: Array[0]
为什么会那样?当我打印数组的长度时,它表示0.我尝试了$ loaded函数,但它没有影响。
syncObject.$loaded().then(function(syncObject) {
console.log(syncObject.length);
});
我也无法访问数组的属性,因此无法遍历它。
答案 0 :(得分:0)
看起来$ loaded()方法不起作用。我在加载数据和执行其他操作之间添加了2秒的超时,因此它开始工作。