【发布时间】:2015-05-28 16:18:46
【问题描述】:
我正在使用三个 Backbone 模型/集合,我需要能够创建一个自定义过滤器,类似于在 .filter 方法中构建的 JavaScript。我有一个Build 模型,它与我的Module 模型有Backbone.HasMany 关系。第三个模型是Access,它有一个特定的构建和来自该构建的模块集合的模块子集,以允许用户访问。
我有一个视图,让管理员编辑访问权限。当管理员更改构建时,我希望模块列表使用某种类型的过滤器自动更新,但我无法轻松找到。这是我正在寻找的一些伪代码...
var build = access.get('build');
var modules = access.get('modules'); //backbone collection of module models
function onBuildChange(new_build){
modules = modules.filter(function(module)){
//if the new build contains this module, keep it in the colleciton
return new_build.contains(module);
}
//update the ui to only show the new modules
this.render();
}
我尝试在集合上只使用.filter,它没有出错,但它只是返回一个 JavaScript 数组。我知道我可以从该数组中创建一个新集合,但我想知道 Backbone 中是否已经内置了任何东西来处理这个问题。我知道.where,但我认为这不适用于这种情况,因为它不仅仅是检查属性是否等于值。
谢谢
【问题讨论】:
-
之后我在过滤后的列表中使用过滤器和
collection.reset()让它工作。我希望有一种更优雅的方式,但这似乎可行。
标签: javascript html backbone.js