【问题标题】:retrieve element from Backbone.Collection.remove(n)从 Backbone.Collection.remove(n) 中检索元素
【发布时间】:2012-04-30 10:37:16
【问题描述】:

我正在使用 Backbone.js 迈出第一步,其中之一涉及能够从集合中删除一个项目,更重要的是,检索该项目。 Backbone.Collection.remove 方法只是返回删除项目的原始集合,所以目前我在删除之前获得对所需项目的引用:

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 有一些秘密的小窍门......因为我可能会扩展这个类。

【问题讨论】:

    标签: javascript collections backbone.js


    【解决方案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);
    

    【讨论】: