Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/backbone.js/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Select 主干表单-更改选定选项的最佳方式_Select_Backbone.js_Backbone Forms - Fatal编程技术网

Select 主干表单-更改选定选项的最佳方式

Select 主干表单-更改选定选项的最佳方式,select,backbone.js,backbone-forms,Select,Backbone.js,Backbone Forms,我正在寻找一种最好的方法来根据需要更改选择选项。我知道,我可以通过在表单字段上使用setOptions方法交换选项,但这对我的情况没有帮助。最好在创建表单之前更改选项 在我的模型中,我有许多具有类似模式的字段: field:{type:"Select",title:"", validators: ['required'], options:new App.Collections.SomeCollection()} 比如说,我需要创建表单,我不想让SomeCollection的所有元素都作为选择

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

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

field:{type:"Select",title:"", validators: ['required'], options:new App.Collections.SomeCollection()}
比如说,我需要创建表单,我不想让SomeCollection的所有元素都作为选择选项。我只需要几本,而且我能拿到那本书,没问题。在创建主干窗体实例之前,有没有办法交换选项?我试过了,但到目前为止没有成功。我已经第二次遇到了这个问题,我创建了手动选择(在主干表单引擎之外,所以不使用数据字段属性),然后手动插入选项,但我相信有更好的主意


谢谢你的建议

使用您收藏的筛选版本。不要将
field.options
传递给负责映射和呈现选项的任何人,而是传递集合的筛选版本

var filteredOptions = field.options.filter(function (optionModel) {
    // Some filter boolean check (true adds it to filteredOptions).
    return optionModel.get('key') !== 'UK';
});
每次需要使用新过滤版本的集合重新渲染“选择”时,都会执行此操作

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

另外,过滤器来自。

感谢您的回复。在此之前,我必须执行fetch,如下所示:model.schema.field.options.fetch({async:false});现在我看到这当然会返回有效的模型,但我遇到了另一个问题。我这样传递它:model.schema.field.options=filteredOptions;但选项显示为“未定义”,没有任何值。如果我传递集合(只有很少的元素)而不是数组,主干窗体将重新创建整个集合,我将再次获得所有模型。。。这才是真正的问题,不是过滤,下划线已经是我的朋友了。