Реализация Backbone.Subset.js в Backbone.js для фильтрации моделей из родительской коллекции

В qaru.site/info/135620/... я читал об фильтрации наборов базовых станций и использовании подмножеств.

Один ответ (sled) рекомендует использовать backbone.subset.js ().

Я не мог найти никаких дополнительных ресурсов на backbone.subset.js, и я не смог реализовать его в своем проекте.

Кажется, что backbone.subset.js - идеальное решение для того, чего я пытаюсь достичь.

(Имея одну "родительскую" коллекцию, которая всегда сохраняет все модели и в зависимости от пользовательского ввода фильтрует соответствующие модели из родительской коллекции в коллекцию backbone.subset.)

Моя "родительская" коллекция, содержащая все задачи:

var TasksAll = Backbone.Collection.extend({
    url: '/tasks', // the REST url to retrieve collection data
    model: Task // the models of which the collection consists of
});
var allTasks = new TasksAll();

Теперь я хочу создать коллекцию подмножества, например. задачи, где task.status = 0:

var TasksTrash = new Backbone.Subset({
    superset: allTasks,
    filter: function(Task) {
        return Task.isTrash();
    }
});
var trashTasks = new TasksTrash();

В то время как внутри модели Task метод isTrash возвращает true, если:

this.get('status') == 0

a) Есть ли больше ресурсов на backbone.subset.js?

b) Как реализовать описанный выше сценарий?

c) Могу ли я передать опции "superset" и "filter" в качестве параметров для функции initbase.Subset init?

d) Я заглянул в код backbone.subset.js, когда я 'reset' моя родительская коллекция Моя подмножество Коллекции должны быть обновлены сразу, правильно?

PS: Я новичок в Backbone. Благодарим за помощь.

Ответ 1

Если посмотреть на источник подмножества подмножества, выглядит так, как будто есть крюк предварительной инициализации, который вы могли бы использовать, чтобы сделать "сито" или фильтр доступным как параметр или аргумент:

https://github.com/masylum/Backbone.Subset/blob/master/backbone.subset.js#L50

Как для обеспечения родителя как аргумента, есть замечательный патч для добавления этой точной функциональности:

https://github.com/masylum/Backbone.Subset/pull/5

С его помощью вы можете передать родительский элемент в качестве опции, если это не вариант, библиотека вернется к поиску на объекте Prototype