【问题标题】:How to create a firebaseArray with elements inside of a child with unique id?如何使用具有唯一 id 的孩子内部的元素创建一个 firebaseArray?
【发布时间】:2017-02-14 16:40:47
【问题描述】:

我有一个代码结构,我可以在其中准备完美运行的商店。但是,我需要列出每个商店中的促销活动,并且每个促销活动都有一个唯一的 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>

结果

【问题讨论】:

    标签: javascript firebase firebase-realtime-database unique


    【解决方案1】:

    这样的事情怎么样:

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

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

    【讨论】:

    • 您好,谢谢您的回答,您的代码用于对促销进行分组,但现在我有另一个问题,列出我更改了​​代码以创建包含所有促销的数组,如下 2 个答案:跨度>
    • 看起来问题在于如何将数据添加到数据库,而不是如何读取数据。检查您的 Firebase 控制台的结构,看看它是否符合您的要求。
    • 您好,感谢您的回复,我创建了一个数据库,在其中将促销拆分为一个开放的 {promotions} -> [id store] -> [promotions] 我无法再更改银行了,因为我的应用程序已经在商店中并且旧版本将停止工作,所以我想知道如何将代码定制到 foreach 中以仅创建一个维度数组?。
    【解决方案2】:

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

    我的代码:

    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 只运行两次,如果我将列表更改为索引 ex,则只显示结果:

    促销清单 [0] 或促销清单 1

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

    我只想创建一个包含所有促销活动的一维数组,以便一次列出所有促销活动如何创建一个包含所有促销活动的简单数组?

    跟随结果的图像:

    Resuult

    【讨论】:

      【解决方案3】:

      我发现在 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>
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-21
        • 2011-11-06
        • 1970-01-01
        • 2021-01-24
        • 1970-01-01
        • 1970-01-01
        • 2018-09-24
        • 1970-01-01
        相关资源
        最近更新 更多