离子1与Firebase 3从快照获取密钥?

时间:2016-10-30 02:51:55

标签: javascript firebase ionic-framework firebase-realtime-database

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

任何建议都将不胜感激。

1 个答案:

答案 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,它可以解决许多问题。