在离子列表

时间:2017-01-26 15:18:55

标签: angularjs firebase ionic-framework firebase-realtime-database ng-repeat

我将数据存储在firebase中,update()就是这样

    var newKey = firebase.database().ref().push().key;

    var updates = {};
    updates['metadata/' + newKey] = {
        name: $scope.formData.name,
        price: $scope.formData.price
    };

    updates['realdata/' + newKey] = {
        name: $scope.formData.name,
        price: $scope.formData.price,
        date: $scope.formData.date
    };

    return firebase.database().ref().update(updates)
    .then(function(ref){
        console.log("added in fb");
    }, function(error){
        console.log("error " + error)
    });

现在在另一个页面上我将数据从firebase中提取出来,但我似乎无法将其映射到我的列表中。

我尝试了多种方式将数据拉出来,并且在将数据记录到控制台时我都可以看到数据。

    var dbRef = firebase.database().ref('/metadata');
    //Method 1
    $scope.list = $firebaseArray(dbRef);
   /*
     Result here in the console is an array with objects
     but when setting this in my list, I get the same amount of items pulled out but they are empty
   */ 

    //Method 2 - I prefer this way as per docs it's a best practice
     var loadmetadata = function(data){
         console.log(data.val().name); // I get the actual name
         $scope.list = data.val().name
     };

     dbRef.on('child_added', loadmetadata);
     dbRef.on('child_changed', loadmetadata);

我的观点只是一个简单的

<ion-item ng-repeat="listitem in list">
{{ listItem.name }}
</ion-item>

我错过了什么?我更喜欢第二种方法,如果有人可以帮我实现这个目标吗?

问题是我在SO上找到了同样问题的人,他能够用我上面的方法解决它。以下是问题/答案Firebase 3 get list which contain generated keys to ionic list

的链接

我看到的唯一区别是他正在对结果进行排序,但我目前不需要。

1 个答案:

答案 0 :(得分:0)

我已经明白了!我不需要使用$ firebaseArray,而是需要使用$ firebseObject方法。

$scope.metadataObj = $firebaseObject(dbRef);

在我看来,我可以做到以下几点:

<ion-item  ng-repeat="(key, value) in metadataObj">{{value.name}}</ion-item>

此方法也包含所有子代码。所以不需要单独听他们。