web-dev-qa-db-ja.com

Backbone.jsコレクションを空にする方法

これが機能しないことを知って驚いた:

coll = new Backbone.Collection
for i in [1..1000]
  coll.add new Backbone.Model()

console.log coll.length # 1000
coll.remove coll.models
console.log coll.length # 500!

私にはバグのように見えますが、この奇妙な結果が多かれ少なかれ発生する理由を理解しています。いずれにしても、_reset(適切なremoveイベントをトリガーしたいので、とにかく機能しません)のような内部メソッドに頼らずに、最善の選択肢は何ですか?

36
Trevor Burnham

これを行う最も簡単な方法は、 .reset()を呼び出すことです[docs] コレクション上。

引数としてモデルを渡さずにcollection.reset()を呼び出すと、コレクション全体が空になります。

つまり.

collection.reset();
84
Scott Harvey

個人的に私は使用します:

_.invoke(collection.toArray(), 'destroy');

destroyメソッドを呼び出して、コレクションのすべての要素を削除します

2
Fassbender