如何清空Backbone.js集合

Tre*_*ham 36 coffeescript 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!
Run Code Online (Sandbox Code Playgroud)

我理解为什么这个奇怪的结果或多或少会发生,虽然它对我来说似乎是个错误.在任何情况下,什么是最好的选择,而不采用像_reset(因为我希望remove触发适当的事件)无论如何都不会工作的内部方法?

Sco*_*vey 84

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

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

collection.reset();
Run Code Online (Sandbox Code Playgroud)

  • 值得注意的是,就像今天发布的Backbone 0.5.0一样,`refresh`已经被重命名为[reset](http://documentcloud.github.com/backbone/#Collection-reset)(一个更清晰的名字,恕我直言). (12认同)
  • 注意:`Collection.reset()`根据文档在最后发出一个"重置"事件.它_ notes not_触发"删除"已删除的模型上的事件. (3认同)
  • 这将清空客户端上的集合,而不是服务器上的集合. (2认同)