如何创建一个firebaseArray,其中包含具有唯一ID的子元素?

时间:2017-02-14 16:40:47

标签: javascript firebase firebase-realtime-database unique

我有一个代码结构,我准备好完美的商店。但是,我需要列出每个商店中的促销活动,每个促销都有一个唯一的ID,所以我想知道如何按照代码列出每个商店内的所有促销活动:

app.js中的

app.factory('Promos', function($firebaseArray){

    var ref = new Firebase('https://myapp.firebaseio.com/');
    var refPromoArray = $firebaseArray(ref);

    return{
    getPromos: function() {
        if (refPromoArray) {
            return $firebaseArray(ref.child('promotions'));
        }
    }
})

在controller.js

.controller('PromoListCtrl', function($scope, $state, $stateParams, $ionicLoading, Promos) {
    $scope.promoslist = Promos.getPromos();
    console.log($scope.promoslist);
})

在promo_list.html

<ion-list ng-if="promoslist.length > 0" can-swipe="true">
    <ion-item ng-repeat="promoslist in promo" type="item-text-wrap"
              href="#/app/local/{{promo.$id}}">
        <img ng-src="{{promo.photo}}" />
        {{local.title}}
    </ion-item>
</ion-list>

结果

enter image description here

3 个答案:

答案 0 :(得分:0)

这样的事情怎么样:

var ref = firebase.database().ref('/promotions/');
ref.on('value', function(snapshot) {
    snapshot.forEach(function(data) {
    console.log(data.key + " = " + data.val().yourpoerty);
});

实际上快照就是你的阵列。如果您想要某种只有数据的普通数组,您可以创建一个并在数组中手动​​添加它们。祝好运。

答案 1 :(得分:0)

您好,感谢您的代码对促销进行分组所给出的答案,但现在我还有另一个问题,列出我更改了​​代码以创建一个包含所有促销的数组,如下所示:

我的代码:

var promoslist = [];

promos = ref.child('promotions');

            promos.on('value', function(snapshot) { 
                snapshot.forEach(function(data) {
                promoslist.push(data.val());
            });
            });



 **To list via the code below:**

   <ion-list ng-if="promoslist.length > 0">
  <Ion-item ng-repeat = "promo in promoslist">
      {{Promo}}
    </ Ion-item>
  </ion-list>

在这种情况下,我有2个商店有4个促销,但代码生成了两个维度的数组,每个项目的两个促销,因此ng-repeat仅运行两次,仅显示结果,如果我将列表更改为索引前:

Promoslist [0]或promoslist 1

<Ion-item ng-repeat = "promo in promoslist[0]">

我想创建一个包含所有促销的一维数组,以便一次性列出所有这些数据?如何创建一个简单的数组?

跟随结果的图像:

Resuult

答案 2 :(得分:0)

我发现解决方案在ng-repeat中执行循环重复组合,如下代码所示:

<ion-list ng-if="promoslist.length > 0" can-swipe="true" >
<div ng-repeat="promo in promoslist[0]">
            <ion-item ng-repeat="promo in promoslist[$index]" type="item-text-wrap" class="item-avatar"
                      href="#/app/promo/{{promo.idstore}}/{{promo.id}}"  ng-if="promo.status==='active'">
                <img ng-src="{{promo.image}}"/>
                {{promo.title}}
                <p>{{promo.store}}</p>
            </ion-item>
            </div>
        </ion-list>