2012-04-04 8 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からフェッチされます。

現在、私はこれらの線に沿って何かを使用しています。これはちょっとしたようですが、私はこの権利について考えているのか、それとも良い方法があるのか​​疑問に思っていました。

乾杯!

+0

http://documentcloud.github.com/backbone/#Collection-reset "モデルを引数として渡さずにcollection.reset()を呼び出すと、コレクション全体が空になります。" – asawyer

+0

リセットはコレクションを空にしますが、状態を保持しません。言い換えれば、コレクションをリセットすると、芝生の椅子は裸ではありません。 – andrewpthorp

+0

私は、より良い方法を求めて、状態をクリア/空の状態をフェッチする場所を考えました。私はクリア状態/リセットコレクションを提案しました。また、collection.resetをオーバーライドして状態をクリアし、元のリセットを呼び出すこともできます。 – asawyer

答えて

3

バックボーンはRESTish原則に従っていますが、悲しいことにRESTは一括削除手順については説明していません。リソースは一度に1つずつしか削除できません。通常、APIは、DELETE /favoritesのようなコレクションURI全体でHTTP DELETEをサポートしません。一度に1つずつDELETE /favorites/42になります。したがって、一般的にコレクションは主にfetch/GETを行い、セーブや削除を行うために個々のモデルに委譲するように設計されているため、これを実行する単一のバックボーン・メソッドはありません。だから、あなたは一括削除のアプローチのためにあなた自身である。もっとRPCのような何かをすることができますし、IDのリストを削除手続きに渡すこともできますが、上記のことは私にはまったく適切だと思うし、それらをすべて直接削除してからコレクションを再フェッチすることも私にとって非常に合理的です。だから私はあなたが解決策は大丈夫だと思いますが、他の人が何を示唆しているのか興味があります。

関連する問題