firebase.database().ref('users/' + user.uid + '/cars')
.on('value', function(snapshot) {
$scope.cars = snapshot.val();
console.log('snapshot', JSON.stringify(snapshot.val()));
});
我可以提取我需要的所有数据,除了Firebase设置的键值(-KVChuDgmbogzH2bKm1A)。它正在登录到控制台。但我无法展示它。我试过cars.key,key,$ id,cars。$ id
<div ng-repeat="car in cars">
<p>item key: {{car.key}}</p> <- this I can't get
<h2>{{car.color}}</h2><- this is fine
<p>{{car.motor}}</p><- this is fine
任何建议都将不胜感激。
答案 0 :(得分:0)
来自Firebase的数据正在异步加载。加载数据时,Angular已不再为它做好准备了。
因此,您需要告诉AngularJS它需要更新HTML。最简单的方法是将范围更新包装在$timeout()
调用中:
firebase.database().ref('users/' + user.uid + '/cars')
.on('value', function(snapshot) { $timeout() {
$scope.cars = snapshot.val();
console.log('snapshot', JSON.stringify(snapshot.val()));
})});
<强>更新强>
您似乎在寻找每个快照的key
。
<div ng-repeat="(key, car) in cars">
<p>item key: {{key}}</p> <- this I can't get
<h2>{{car.color}}</h2><- this is fine
<p>{{car.motor}}</p><- this is fine
此时我建议切换到使用AngularFire,它可以解决许多问题。