Backbone-Forms - 更改选择选项的最佳方式

时间:2014-07-29 19:54:35

标签: select backbone.js backbone-forms

我正在寻找一种按需更改选择选项的最佳方法。我知道,我可以在表单字段上使用setOptions方法交换选项,但在我的情况下它没有帮助。在创建表单之前更改选项会更好。

在我的模型中,我有许多具有相似模式的字段:

field:{type:"Select",title:"", validators: ['required'], options:new App.Collections.SomeCollection()}

说,我需要创建表单,我不希望将SomeCollection的所有元素都作为选择选项。我需要很少的东西,我可以获取该集合,这没问题。在创建Backbone Forms实例之前有没有办法交换选项?到目前为止,我已经尝试过,但没有成功。我已经第二次遇到这个问题,我已经手动创建了select(在Backbone Forms引擎之外,所以不使用数据字段属性),然后手动插入选项,但我相信有更好的主意。

感谢您的任何想法!

1 个答案:

答案 0 :(得分:2)

使用集合的过滤版本。不要将field.options传递给负责映射和渲染选项的任何内容,而是传递集合的过滤版本。

var filteredOptions = field.options.filter(function (optionModel) {
    // Some filter boolean check (true adds it to filteredOptions).
    return optionModel.get('key') !== 'UK';
});

每次需要使用新的过滤版本的集合重新渲染选择时,都会执行此操作。

P.S。过滤器来自underscore