我正在寻找一种按需更改选择选项的最佳方法。我知道,我可以通过在表单字段上使用setOptions方法来交换选项,但在我的情况下这并没有帮助。最好在创建表单之前更改选项。
在我的模型中,我有许多具有相似模式的字段:
field:{type:"Select",title:"", validators: ['required'], options:new App.Collections.SomeCollection()}比方说,我需要创建表单,并且我不想让SomeCollection的所有元素都作为选择选项。我只需要很少的几个,而且我可以拿到那个集合,这没问题。有没有办法在创建Backbone Forms实例之前交换选项?我已经试过了,但到目前为止还没有成功。我已经第二次遇到这个问题了,我已经手动创建了select (在Backbone Forms引擎之外,所以没有使用data-field属性),然后还手动插入了选项,但我相信还有更好的想法。
谢谢你的任何想法!
发布于 2014-07-30 05:52:37
使用您的集合的过滤版本。不是将field.options传递给负责映射和呈现选项的对象,而是传递集合的过滤版本。
var filteredOptions = field.options.filter(function (optionModel) {
// Some filter boolean check (true adds it to filteredOptions).
return optionModel.get('key') !== 'UK';
});每次需要使用集合的新筛选版本重新呈现select时,都会执行此操作。
附注:过滤器来自underscore。
https://stackoverflow.com/questions/25023813
复制相似问题