如何清空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! 

我明白为什么这个奇怪的结果会或多或less地出现,虽然这对我来说似乎是一个错误。 无论如何,什么是最好的select,而不诉诸像_reset这样的内部方法(无论如何,因为我想要触发适当的remove事件,这是不行的)?

最简单的方法是调用.reset() [docs]

调用collection.reset()而不传递任何模型作为参数将清空整个集合。

 collection.reset(); 

Personnaly我使用:

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

通过调用destroy方法删除集合的每个元素

显而易见的答案是克隆models ,例如:

 coll.remove coll.models.slice(0) 

这对我来说有点不好意思,但这可能只是我自己的审美。