Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 在离子列表中映射firebase数据_Angularjs_Firebase_Ionic Framework_Firebase Realtime Database_Ng Repeat - Fatal编程技术网

Angularjs 在离子列表中映射firebase数据

Angularjs 在离子列表中映射firebase数据,angularjs,firebase,ionic-framework,firebase-realtime-database,ng-repeat,Angularjs,Firebase,Ionic Framework,Firebase Realtime Database,Ng Repeat,我使用update()将数据存储在firebase中,就像这样 var newKey = firebase.database().ref().push().key; var updates = {}; updates['metadata/' + newKey] = { name: $scope.formData.name, price: $scope.formData.price }; updates['realdata

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

    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>

{{listItem.name}
我错过了什么?我更喜欢第二种方法,如果有人能帮我做到这一点

问题是我在这里发现了一个有同样问题的人,他能够用我上面提到的方法解决这个问题。这是问题/答案的链接


我所看到的唯一不同是,他正在对结果进行排序,但我目前不需要这样做。

我刚刚弄明白了!我需要使用$firebseObject方法,而不是使用$firebaseArray

$scope.metadataObj = $firebaseObject(dbRef);
在我看来,我可以做到以下几点:

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

此方法也包含所有子方法。所以不需要单独倾听

我刚想出来!我需要使用$firebseObject方法,而不是使用$firebaseArray

$scope.metadataObj = $firebaseObject(dbRef);
在我看来,我可以做到以下几点:

<ion-item  ng-repeat="(key, value) in metadataObj">{{value.name}}</ion-item>
{{value.name}
此方法也包含所有子方法。所以不需要单独倾听