2017-03-13 13 views
0

私は何を得るの当然私Firebaseからデータを取得していますがオブジェクトである:サブオブジェクトを配列にプッシュするにはどうすればいいですか?

enter image description here

私はNG-繰り返し簡単にしたいように、私はしかし私ならば、それは問題ではありません、それらを表示することができます入力検索フィールドと単純なフィルターで検索したい場合は、配列を受け取るのではなくオブジェクトを受け取るため、エラーが返されます。

は、私はこのような配列にそれらを送信することを決定:

var userId = firebase.auth().currentUser.uid; 
var ref = firebase.database().ref('/accounts/' + userId + "/cards/"); 

var cards2 = []; 
ref.orderByChild('cards').on("value", function(snapshot1) { 
    var cards1 = snapshot1.val(); 
    cards2.push(cards1); 
    console.log(snapshot1.val()); 
    $timeout(function(){ 
    $scope.cards = cards2; 
    console.log(cards2); 
    }) 
}) 

しかし、出力は次のようなものです:私は私のngのリピートを表示することができない、言い換えれば enter image description here

2理由オブジェクトはサブオブジェクトとしてオブジェクト内の配列にプッシュされます。

ng-repeat="card in cards | filter:searchText" 

EDIT:私は私のNGリピート内でそれらを表示するためにそれらを別々にソートし、このようにそれらをフィルタリングすることができるということができますどのように

<ion-view view-title="MY CARDS"> 
    <ion-nav-buttons side="right"> 
     <button class="button button-icon icon ion-android-more-vertical"></button> 
    </ion-nav-buttons> 
    <ion-content class="padding"> 
    <div class="list list-inset input-search"> 
      <label class="item item-input"> 
       <i class="icon ion-search placeholder-icon"></i> 

       <input ng-model="searchText" type="text" placeholder="Search"> 
      </label> 
     </div> 
     <a><div ng-click="toUserView($index)" value="Taba" ng-repeat="card in cards | filter:searchText" class="list card "> 
      <div class="item item-avatar item-icon-right"> 
       <img ng-src="{{card.photoURL}}"> 
       <h2>{{card.name}}</h2> 

       <!-- *class time/time and icon --> 
           <!-- *class icon-p/icon location --> 
       <p class="icon-p"> 

        {{card.description}} 
       </p> 
       <p style="color:white;" id="rotaryId{{$index}}" >{{card.rotaryId}}</p> 
      </div> 


     </div></a> 

    </ion-content> 
</ion-view> 
+0

あなたがng-使用しているHTMLコードを??共有してくださいすることができます繰り返す –

+0

確かに、私はそれを更新しました – FrenchyNYC

答えて

1
:ここでは私のHTMLコードですあなたがオブジェクト

の配列を取得します

var userId = firebase.auth().currentUser.uid; 
var ref = firebase.database().ref('/accounts/' + userId + "/cards/"); 

var cards2 = []; 
    ref.orderByChild('cards').on("value", function(snapshot1) { 
     var cards1 = snapshot1.val(); 
     for(var i in cards1){ 
      cards2.push(cards1[i]) 
     } 
     $scope.cards = cards2; 
     console.log(cards2); 
     }) 
    }) 

をこの場合:

使用してみてください

+0

こんにちは、ありがとう、これは、任意のアイデアを追加すると同じ結果がまだありますか? – FrenchyNYC

+0

完全なコードを作成してもよろしいですか?私はjavascriptを初めて使っているので、あなたの答えは私がすでに持っているよりも多くのトラブルを与えるだろう! :pありがとうございました – FrenchyNYC

+0

ありがとう、私のコードに関して、私はこれで何を置き換えるべきですか? – FrenchyNYC

0
  1. Firebaseはない、実際に店舗アレイを行い、それができればfirebaseで配列を回避するためのベストプラクティスです:https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html

  2. なぜ、あなたのオブジェクトのキーを反復処理しませんか? How can I iterate over the keys, value in ng-repeat in angular

変更:

ng-repeat="card in cards 

へ:

ng-repeat="(key, card) in cards 

例えば:

<a><div ng-click="toUserView($index)" value="Taba" ng-repeat="(key, card) in cards | filter:searchText" class="list card "> 
    <div class="item item-avatar item-icon-right"> 
     <img ng-src="{{card.photoURL}}"> 
     <h2>{{card.name}}</h2> 

     <!-- *class time/time and icon --> 
         <!-- *class icon-p/icon location --> 
     <p class="icon-p"> 

      {{card.description}} 
     </p> 
     <p style="color:white;" id="rotaryId{{$index}}" >{{card.rotaryId}}</p> 
    </div> 


</div></a> 
関連する問題