2016-09-06 3 views
0

ich auf einer News Feed arbeite, die auf Facebook News Feed ähnlich ist. Ich implementiere es in der folgenden Reihenfolge:

  1. Wenn App gestartet wird, erhalten Sie alles, aber drücken Sie nur zwei Artikel zu zeigen.

  2. Der Benutzer kann nach unten scrollen, um mehr zu sehen und ich werde mehr in die Liste aufnehmen.

  3. Wenn es irgendwelche neuen Elemente sind, muss der Benutzer zu aktualisieren ziehen, die neue hinzuzufügen.

Das einzige Problem, das ich jetzt habe, ist, dass jedes Mal, wenn ein Element hinzugefügt wird, $firebaseArray automatisch das neue Element in meinem Array fügt hinzu, dass ich will nicht sajv Änderungen (ich einmal abfragen mag, erhalten einen Satz Liste). Ich habe mich gefragt, ob jemand wissen könnte, wie man das automatische Update verhindert?

Antwort

0

Statt direkt Ihre $firebaseArray die Ansicht der Bindung, klont es zu einem Umfang (oder Controller) Eigenschaft, die die Ansicht gebunden wird. Factorize diesen Prozess in einer Funktion, die Sie aufrufen können, wenn der Benutzer Pull-Reloads so die $firebaseArray wird neu erstellt. Firebase der http api zu verwenden, mit dem Winkel $http Service

wäre ein geeigneter Ansatz sein.

Edit: das Array zu einem Umfang var zu klonen, gehen Sie folgendermaßen vor:

var allEvents = $firebaseArray(queryOfeverything); 

allEvents.$loaded() 
    .then(function(events){ 
     $scope.allEvents = angular.map(events, function(event) { 
      return event; // you may want to replace this line - I am not very familiar with firebase. 
     }) 
    }); 
+0

ich etwas tat, ähnlich wie das schon wenn du das meinst. \t $ scope.allEvents = $ firebaseArray (queryOfeverything); $ scope.eventToDisplay = $ scope.allEvents. Leider hat das nicht funktioniert. –

+0

Dies liegt daran, dass Sie das '$ firebaseArray', das technisch ein JavaScript-Objekt ist, als Referenz übergeben. Sie müssten diese $ scope-Variable zuordnen (das Array in ein einfaches Javascript-Array klonen). Ich werde die Antwort aktualisieren. – vgrafe

1

Blick in .Sobald diese die Daten nur einmal bekommen können zu: https://firebase.google.com/docs/reference/js/firebase.database.Query#once

+0

Während 'once()' in der Tat helfen würde, ist das Problem, dass 'fireBaseArray()' den 'on()' weg vom OP-Code abstrahiert. –

+0

Richtig, deshalb glaube ich nicht, dass das OP es benutzen kann. –

+0

Danke Frank und Mathew! Ich benutze FirebaseArray, weil ich das mache. '' 'Var queryOfeverything = firebase.database() ref ("Events") orderByChild ("dateSince1970") startat (nowSince1970)...' '' Ich bestelle die Ereignisse, die ich erhalte, und ich möchte nur Ereignisse bekommen nach einem bestimmten Datum. Wenn ich einmal benutze, kann ich für jedes ein Ereignis erstellen, das ein bestimmtes Datum überschreitet und orderby in angular verwendet. Ist das der effizienteste Weg? Ich danke dir sehr! –

Verwandte Themen