Ich bin auf der Suche nach einer eleganten Möglichkeit, Modelle zu einer Sammlung voranzustellen, wenn Sie sie hinzufügen. Im Backbone-Quellcode gibt es dafür eine unshift
-Methode, aber die Methode add
zum Hinzufügen von Modellen zu einer Sammlung ist zu komplex, um sie einfach zu erweitern. Ich baue eine Diashow, die von Fotos und Tweets abhängig ist und immer das Neueste an der Spitze, das Älteste zuletzt zeigen sollte. Vereinfachung von meinem Problem:Prepend Modelle zur Sammlung
initialisieren App, API-Aufruf zurückkehrt:
apple, banana, lemon
So Apfel ist die neueste Folie. Die Sammlung wird gebaut:
apple, banana, lemon
Nach Intervall, prüft API-Aufruf, ob neuere Früchte, Ergebnis:
orange
Sammlung anhängt Modell:
(apple, banana, lemon), orange
Das ist nicht, was ich will; Orange ist die neueste Frucht und Apfel danach. Aber in diesem Fall könnte ich meine ursprüngliche Sammlung vor dem Anhängen umkehren und beim Zeichnen von Dias erneut umkehren. Nun werden die Dinge komplizierter (I Klammern hinzugefügt zu klären):
API-Aufruf prüft, ob noch mehr Früchte:
pineapple, kiwi
Sammlung anhängt neue Modelle eins nach dem anderen:
((apple, banana, lemon), orange), pineapple, kiwi
So, jetzt Von Neu zu Alt sieht meine Sammlung so aus:
((not so old, older, oldest), pretty new), brand new, new
Was macht absolut keinen Sinn :)
Natürlich könnte die Änderung der API-Antwort mein Leben einfacher machen, aber das ist derzeit keine Option; es sollte auch nicht wirklich wichtig sein, da die Reihenfolge der Items in der Antwort neu ist -> alt, was für mich in Ordnung ist.
Ich konnte eine out-of-the-Box-Lösung dafür nicht finden und ich möchte nicht Dinge durch Klonen eines Teils der Backbone-Quelle zu unshift
neue Modelle zu kompliziert. Vorschläge? Vielen Dank!
Wie funktioniert 'nichtshift' nicht? Aus der Dokumentation "Hinzufügen eines Modells am Anfang einer Sammlung. Nimmt dieselben Optionen wie Hinzufügen an." – JayC
Da ich der Sammlung kein Modell manuell hinzufüge, verwende ich ein Intervall, um Json vom Server abzurufen, und Backbone hängt jedes Objekt als Modell an die Sammlung an. Sicher könnte ich eingreifen und "Unshift" verwenden, aber das hätte meinen Code komplexiert (vielleicht hätte ich darauf hinweisen sollen, dass meine API-Endpont keine echte Repräsentation meiner Sammlung ist, es ist eine Art "Streaming" -Kollektion) – Phortuin