如何清空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)
这对我来说有点不好意思,但这可能只是我自己的审美。