Angenommen, ich habe ein Backbone.Collection
mit drei Modellen. Ich möchte den mittleren ersetzen, indem ich das erste und das dritte Modell in ihrer aktuellen Position halte. (Angenommen, es gibt keine comparator
.) Wie mache ich das?
Dies ist eine gute Frage und noch heute relevant, also lohnt es sich zu antworten.
Es ist möglich, dass die Funktionalität, die in meiner Antwort verwendet wurde, nicht vorhanden war, als Sie die Frage gestellt haben, aber es ist jetzt ganz einfach, dies zu tun.
Nehmen wir an, Ihre Sammlung heißt myCollection
und enthält bereits 3 Modelle. Sie können auch sagen, dass Sie ein neues Modell mit dem Namen newModel
haben, das Sie verwenden möchten, um das vorhandene mittlere Modell in der Sammlung zu ersetzen. Um das mittlere Modell zu ersetzen und das erste und dritte Modell unverändert zu lassen, können Sie Folgendes tun:
Dies wird genau das tun, was Sie wollen, und das remove
-Ereignis für das entfernte Modell und das add
-Ereignis für die Ersetzung auslösen, was Sie auch wollten.
Es gibt einen einfachen Mechanismus, der in Backbone integriert ist, der dieses Problem behandelt
myCollection.add(newModel, {merge: true});
Sie könnten eine replaceAt-Funktion in der Backbone-Sammlung einführen, die in etwa so aussieht:
%Vor%Es basiert auf den Methoden _add und _remove. Es sollte die entsprechenden Ereignisse auslösen, die Sie suchen, aber ich habe das nicht getestet. Ich habe getestet, dass es ein Element in der Sammlung an der entsprechenden Stelle ersetzen würde.
(mit Backbone .3.3)
Eine Möglichkeit besteht darin, das Array collection.models
direkt zu ändern und dann
Dies ruft jedoch ein add
-Ereignis auf, das jedes Modell auflistet. Idealerweise würde ich ein remove
-Ereignis für das entfernte Modell und ein add
-Ereignis für das neue aufrufen. Ich bin mir nicht sicher, ob das möglich ist, ohne ein comparator
zu verwenden und Indizes auf meinen Modellen hinzuzufügen ...
Obwohl diese Frage vor langer Zeit gestellt wurde, ist sie sogar für heute relevant.
Und eigentlich ist es sehr einfach.
schau im folgenden Beispiel:
%Vor% Ich hoffe, es würde jemandem helfen ...
Viel Glück!
Tags und Links backbone.js