2012-04-04 3 views
4

Ich verwende Backbone.js, Lawnchair und backbone.lawnchair.js.Löschen Sie alle Elemente aus der Backbone Collection und entfernen Sie sie aus dem zugehörigen Lawn Chair

Ich fragte mich, was der richtige Weg wäre, eine Sammlung (sowohl von der Anwendung und von localStorage) "zu leeren" wäre?

Derzeit bin ich Einsatz etwas in diese Richtung:

Favorites.Collection = Backbone.Collection.extend({ 
    model: Favorites.Model, 
    lawnchair: new Lawnchair({ name: "favorites" }, function(e){}), 

    empty: function(){ 
    this.lawnchair.nuke(); 
    this.fetch(); 
    } 
}); 

Dies ist im wesentlichen der Elemente in local zerstören (lawnchair liefert die Nuke-Methode) und das Abrufen von local. Das scheint ein wenig klobig zu sein, und ich habe mich gefragt, ob ich über dieses Recht nachdenke - oder ob es einen besseren Weg gibt.

Prost!

+0

http://documentcloud.github.com/backbone/#Collection-reset "Wenn collection.reset() aufgerufen wird, ohne Modelle als Argumente zu übergeben, wird die gesamte Sammlung leer." – asawyer

+0

Zurücksetzen leert die Sammlung, behebt den Status jedoch nicht. Mit anderen Worten, wenn ich die Sammlung zurückstelle, wird der Liegestuhl nicht mit einem Atomkraftwerk belastet. – andrewpthorp

+0

Ich dachte, du fragst nach einem besseren Weg, dann lösche den Status/leere Zustand holen. Ich schlug vor, den Status zu löschen/zurücksetzen. Sie können auch collection.reset überschreiben, um den Status zu löschen, und das ursprüngliche Zurücksetzen aufrufen. – asawyer

Antwort

3

Backbone folgt einer Reihe von RESTish-Prinzipien, und leider beschreibt REST kein Massenlöschverfahren. Ressourcen können nur einzeln gelöscht werden. In der Regel unterstützen APIs HTTP DELETE für den gesamten Sammlungs-URI nicht wie DELETE /favorites, nur DELETE /favorites/42 - jeweils einzeln. Daher gibt es keine Single-Backbone-Methode, die dies einfach tut, da die Sammlung in der Regel dafür ausgelegt ist, fetch/GET auszuführen und dann an die einzelnen Modelle zu delegieren, um sie zu speichern und zu löschen. Also ja, Sie sind auf sich allein gestellt für einen Massenlöschungsansatz. Sie können etwas mehr RPC-ähnliches tun und eine Liste von IDs an eine Löschprozedur übergeben, aber das, was Sie oben haben, scheint mir völlig angemessen zu sein, und ja, sie alle direkt zu löschen und dann die Sammlung erneut zu laden, scheint mir auch sehr vernünftig. Also ich denke du bist eine gute Lösung, aber ich bin auch neugierig was andere vorschlagen.

Verwandte Themen