Фильтрация Backbone

Если у меня есть коллекция Backbone и я хочу создать копию этой коллекции с отфильтрованными определенными элементами, как я могу это сделать, сохранив скопированный экземпляр как Backbone.Collection?

Пример:

var Module = Backbone.Model.extend();

var ModuleCollection = Backbone.Collection.​extend({
    model: Module
});

​var modules = new ModuleCollection;

​modules.add({foo: 'foo'​​​​​​},{foo: 'bar'});​​​​​

console.log(modules instanceof Backbone.Collection); // true

var filtered = modules.filter(function(module) {
    return module.get('foo') == 'bar';
});

console.log(filtered instanceof Backbone.Collection); // false

http://jsfiddle.net/m9eTY/

В приведенном выше примере я хотел бы, чтобы filteredбыл отфильтрованной версией модулей, а не просто массив моделей.

По сути, я хотел бы создать метод в экземпляре коллекции, который может отфильтровывать определенные модели и возвращать экземпляр Backbone.Collection, но как только я начинаю фильтровать, методы итерации возвращают массив.

5
задан David Hellsing 24 May 2012 в 16:41
поделиться