5

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

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

不起作用,因为随着每个节点被删除,它会改变集合的长度。制作一个临时数组,然后对其进行迭代。有没有更好的办法?

4

4 回答 4

4

this.nodes.reset()除非您需要remove活动 ,否则请尝试。

除此以外:

var nodes = this.nodes;
while (nodes.length > 0)
    nodes.remove(nodes.at(0));
于 2012-10-17T14:48:41.973 回答
2

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

while ( this.catz.length > 0) this.catz.pop();
于 2013-08-26T18:19:25.347 回答
1

如果您需要在迭代时修改集合,请使用for如下简单的反向操作:

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

小提琴http://jsfiddle.net/xt635/

于 2012-10-17T15:13:43.363 回答
1

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

你可以打电话collection.reset();,它会清空整个集合。我今天用了!

于 2017-04-18T21:29:14.423 回答