web-dev-qa-db-fra.com

Comment vider une collection Backbone.js

J'ai été surpris de découvrir que cela ne fonctionne pas:

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!

Je comprends pourquoi ce résultat étrange se produit, plus ou moins, bien qu'il me semble être un bug. Quoi qu'il en soit, quelle est la meilleure alternative, sans recourir à des méthodes internes comme _reset (qui ne fonctionnerait pas de toute façon, car je souhaite que l'événement remove approprié soit déclenché)?

36
Trevor Burnham

La façon la plus simple de le faire est d'appeler .reset() [documents] sur la collection.

L'appel de collection.reset() sans passer de modèle comme argument videra toute la collection.

c'est à dire.

collection.reset();
84
Scott Harvey

Personnellement j'utilise:

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

qui supprime chaque élément de la collection en appelant la méthode destroy

2
Fassbender