backbone.js清空一个集合

时间:2012-10-17 14:45:53

标签: javascript collections backbone.js

我需要清空一个集合,按顺序删除每个项目。

this.nodes.each(function(node){
  this.nodes.remove(node);
}, this);

不起作用,因为在删除每个节点时,它会更改集合的长度。制作一个临时数组,然后迭代它的工作原理。还有更好的方法吗?

4 个答案:

答案 0 :(得分:4)

除非您需要this.nodes.reset()事件,否则请尝试remove

否则:

var nodes = this.nodes;
while (nodes.length > 0)
    nodes.remove(nodes.at(0));

答案 1 :(得分:2)

清空主干集合的另一种方法:

while ( this.catz.length > 0) this.catz.pop();

答案 2 :(得分:1)

如果您需要在迭代时修改集合,那么使用简单的向后for来执行此操作:

var count = collection.size();
for (var i = count-1; i > -1; i--) {
    collection.remove(collection.at(i));
}

http://jsfiddle.net/xt635/

处小提琴

答案 3 :(得分:1)

http://backbonejs.org/#Collection-reset

你可以调用collection.reset();它会清空整个系列。我今天用它了!