JavaScript – 在Backbone.js中实现Backbone.Subset.js以从父集合中过滤模型

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

使用它,您可以作为选项传递给父项,如果它不是一个选项,库将会回退到对象上查找原型

相关文章

前言 做过web项目开发的人对layer弹层组件肯定不陌生,作为l...
前言 前端表单校验是过滤无效数据、假数据、有毒数据的第一步...
前言 图片上传是web项目常见的需求,我基于之前的博客的代码...
前言 导出Excel文件这个功能,通常都是在后端实现返回前端一...
前言 众所周知,js是单线程的,从上往下,从左往右依次执行,...
前言 项目开发中,我们可能会碰到这样的需求:select标签,禁...