Implementing Backbone.Subset.js in Backbone.js to filter Models from a parent Collection

空扰寡人 提交于 2020-01-01 08:36:17

问题


In this stackoverflow post i read about filtering backbone collections and using subsets.

One answer (by sled) recommends using backbone.subset.js (usage example).

I could not find any further resources on backbone.subset.js and I failed implementing it into my project.

It seems like backbone.subset.js is the perfect solution for what i'm trying to achieve.

(Having one "parent" collection that holds all models at all times, and depending on user input filtering the relevant models from the parent collection into a backbone.subset collection.)

My "parent" collection, holding all tasks:

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();

Now i want to create a subset collection for e.g. tasks where task.status = 0:

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

Whereas inside the Task model, the method "isTrash" returns true if:

this.get('status') == 0

a) Are there any more resources on backbone.subset.js?

b) How do I implement above scenario?

c) Can I pass 'superset' and 'filter' options as params to the Backbone.Subset init function?

d) I looked into the backbone.subset.js code, when I 'reset' my parent Collection my subset Collections should be updated straight away, right?

PS: I'm fairly new to Backbone. Thanks for your help.


回答1:


Looking at the source for backbone-subset, it looks as though there is a pre-initialization hook which you could utilize in order to make the 'sieve' or filter available as an option or argument:

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

As for providing parent as an argument, there is an outstanding patch to add that exact functionality:

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

With it, you can pass in parent as an option, if it is not an option the library will fall back to looking for it on the object Prototype



来源:https://stackoverflow.com/questions/8214712/implementing-backbone-subset-js-in-backbone-js-to-filter-models-from-a-parent-co

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!