2012-04-04 7 views
4

Я использую Backbone.js, Lawnchair и backbone.lawnchair.js.Очистить все элементы от Backbone Collection и удалить их из связанного Lawnchair

Мне было интересно, как правильно «очистить» коллекцию (как от приложения, так и от localStorage)?

В настоящее время я используя что-то вдоль этих линий:

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

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

Это, по существу, разрушающие элементы в LocalStorage (lawnchair обеспечивает ядерный метод) и забирающее от LocalStorage. Это кажется немного неуклюжим, и мне было интересно, думаю ли я об этом праве - или если есть лучший способ.

Cheers!

+0

http://documentcloud.github.com/backbone/#Collection-reset «Вызов collection.reset() без передачи каких-либо моделей в качестве аргументов будет пустым всей коллекцией». – asawyer

+0

сбрасывает сборку, но она не сохраняется. Другими словами, когда я возвращаю коллекцию, лужайка не заряжается. – andrewpthorp

+0

Я думал, вы с просьбой о лучшем пути, а затем очистите состояние/выборку пустого состояния. Я предложил ясную сборку состояния/сброса. Вы также можете переопределить функцию collection.reset, чтобы очистить состояние и вызвать исходный сброс. – asawyer

ответ

3

Магистраль следует за типами RESTish и, к сожалению, REST не описывает процедуру массового удаления. Ресурсы могут быть удалены только по одному. Обычно API-интерфейсы не поддерживают HTTP DELETE во всем URI коллекции, например DELETE /favorites, только DELETE /favorites/42 - по одному. Таким образом, нет единого метода базовой линии, который просто делает это, поскольку в целом коллекция в основном предназначена для выполнения fetch/GET, а затем делегирует отдельные модели для сохранения и удаления. Так что да, вы сами по себе для подхода с избыточным удалением. Вы можете сделать что-то большее, чем RPC, и передать список идентификаторов процедуре удаления, но то, что вы имеете выше, кажется мне вполне адекватным, да и удаление их всех напрямую, а затем повторная выборка коллекции также мне очень разумно. Так что я думаю, что вы все хорошо, но мне также интересно узнать, что предлагают другие.