2012-04-18 2 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 

Мой вопрос, если есть короткий ручной метод для извлечения элемента удаления?

Edit: JFTR, я прочитал справедливый бит источника, и знаю, что оригинальный метод возвращает ссылку на коллекцию -

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

казалось странным, что он не вернулся удаленный элемент., поэтому мне просто интересно, есть ли другой метод, который мне не хватает, или общий способ достижения этого шаблона. Не было бы первого раза, когда я использовал длинный обходной путь, когда у API был какой-то секретный doohickey до его рукава ... так как это я, вероятно, расширю класс.

ответ

1

Вы можете добавить функцию к типу Backbone.Collection и использовать 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

Смежные вопросы