1

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

在我的模型中,我有许多具有类似架构的字段:

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

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

感谢您的任何想法!

4

1 回答 1

2

使用您的收藏的过滤版本。与其传递field.options给负责映射和渲染选项的任何对象,不如传递集合的过滤版本。

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

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

PS 过滤器来自下划线

于 2014-07-29T21:52:36.650 回答