2012-04-18 98 views
1

我正在采取与Backbone.js我的第一步,其中之一涉及到能够从集合中删除项目,更重要的是,检索该项目。该Backbone.Collection.remove方法只是返回原始集合与已删除项目,所以此刻我在去除之前获得所需项目的引用:从Backbone.Collection.remove(n)检索元素

var Collection = Backbone.Collection.extend(...array of Backbone.Models...), 
    removedItem = Collection.get(3); 
console.log(Collection.remove(3));//same collection sans #3 

我的问题是,如果有一个短用于检索删除项目的手动方法?

编辑:JFTR,我读过源的公平一点,并且知道,原来方法返回到集合的引用 -

remove: function(models, options) { 
    // <snip for brevity> 
    // chain pattern incoming 
    return this; 
}, 

看起来很怪异,我认为它未返回被删除的项目,所以我只是想知道是否有另一种方法我失踪,或实现这种模式的常见方法。如果API有一些秘密的doohickey,它不会是我第一次使用一个很长的解决方法,因为它可能会扩展这个类。

回答

1

您可以在Backbone.Collection'type'中添加一个函数,并在您创建的每个集合上使用removeModel。

Backbone.Collection.prototype.removeModel(model) { 
    var _model = this.get(model); 
    this.remove(item); 
    return _model; 
} 

var removedModel = collection.removeModel(model); 
+0

我一直在努力得到这个工作:http://stackoverflow.com/questions/12895176/extending-backbone-collection-prototype – sunwukung 2012-10-15 12:13:00