在
this stackoverflow post我读过关于过滤骨干集合和使用子集.
一个答案(由雪橇)建议使用backbone.subset.js(usage example).
我在backbone.subset.js找不到任何进一步的资源,我没有在我的项目中实现它.
看来,骨干网络是一个完美的解决方案,我正在努力实现.
(拥有一个“父”集合,始终保存所有模型,并根据用户输入将相关模型从父集合过滤到骨干集合集合中.)
我的“父母”收藏,包含所有任务:
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();
而在任务模型中,方法“isTrash”返回true如果:
this.get('status') == 0
a)backbone.subset.js有更多的资源吗?
b)如何实现上述方案?
c)可以将“超集”和“过滤”选项作为参数传递给Backbone.Subset init函数吗?
d)我查看了骨干.subset.js代码,当我重置’我的父集合我的子集集应该立即更新,对吧?
PS:我对Backbone来说相当新鲜谢谢你的帮助.
解决方法
查看骨干子集的来源,它看起来好像有一个预初始化的钩子,您可以使用它来使“筛选”或过滤器可用作选项或参数:
https://github.com/masylum/Backbone.Subset/blob/master/backbone.subset.js#L50
对于提供父级作为参数,有一个未完善的补丁来添加这个确切的功能:
https://github.com/masylum/Backbone.Subset/pull/5
使用它,您可以作为选项传递给父项,如果它不是一个选项,库将会回退到对象上查找原型