2017-03-13 2 views
0

ich Daten von meiner Firebase und natürlich bin abrufen, was ich bekommen sind Objekte:Wie schiebe ich meine Unterobjekte zu einem Array?

enter image description here

Ich kann sie zeigen, wie ich in meinem will einfach Ng-Repeat, das ist kein Problem, aber wenn ich Durchsucht man es mit einem Eingabesuchfeld und einem einfachen Filter, gibt es einen Fehler zurück, weil es kein Array, sondern Objekte erhält.

ich entscheiden, sie in ein Array wie folgt zu senden:

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); 
    }) 
}) 

Aber der Ausgang ist wie folgt: enter image description here

Mit anderen Worten, ich kann nicht meine ng-repeat angezeigt werden, da die beiden Objekte werden als Unterobjekte in mein Array in einem Objekt geschoben!

Wie ich sie separat, um sortieren sie in meiner ng-repeat anzuzeigen und filtern zu können, wie diese:

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

EDIT: hier ist mein HTML-Code:

<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

können Sie bitte Ihre HTML-Code teilen ?? wo verwenden Sie ng- wiederhole –

+0

Sicher, ich habe es aktualisiert – FrenchyNYC

Antwort

1

Versuchen zu verwenden:

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); 
     }) 
    }) 

In diesem Fall werden Sie Array von Objekt erhalten

+0

Hallo, vielen Dank dafür, es hat immer noch das gleiche Ergebnis wenn man das hinzufügt, irgendeine Idee? – FrenchyNYC

+0

Würde es Ihnen etwas ausmachen, einen vollständigen Code zu erstellen? Ich bin neu in Javascript, und Ihre Antwort würde mir mehr Ärger geben, als ich bereits habe! : p Vielen Dank im Voraus – FrenchyNYC

+0

Vielen Dank, und in Bezug auf meinen Code, welchen Teil soll ich es ersetzen? – FrenchyNYC

0
  1. Firebase nicht wirklich Speicher-Arrays, und es ist ein Best-Practice-Arrays in Feuerbasis zu vermeiden, wenn Sie können: https://firebase.googleblog.com/2014/04/best-practices-arrays-in-firebase.html

  2. Warum Ihr Objekt der Schlüssel nicht iterieren? How can I iterate over the keys, value in ng-repeat in angular

Wechsel:

ng-repeat="card in cards 

zu:

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

Zum Beispiel:

<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> 
Verwandte Themen