Javascript 如何从Dijit FilteringSelect小部件中删除所有选项?
我尝试从dijit.form.filteringselect中删除所有选项,并使用下面的函数向dijit.form.filteringselect添加一个选项。但是,我得到一个错误:没有方法getOptions和addOption。我正在使用Dojo1.7Javascript 如何从Dijit FilteringSelect小部件中删除所有选项?,javascript,widget,dojo,dijit.form,Javascript,Widget,Dojo,Dijit.form,我尝试从dijit.form.filteringselect中删除所有选项,并使用下面的函数向dijit.form.filteringselect添加一个选项。但是,我得到一个错误:没有方法getOptions和addOption。我正在使用Dojo1.7 function showTablesDropDown(tableDiv){ dijit.byId(tableDiv).removeOption(dijit.byId(tableDiv).getOptions()); dijit.by
function showTablesDropDown(tableDiv){
dijit.byId(tableDiv).removeOption(dijit.byId(tableDiv).getOptions());
dijit.byId(tableDiv).addOption(dojo.create("option", {label:"None", value:"None"}));
}
如何从dijit.form.filteringselect中删除所有选项并将选项添加到dijit.form.filteringselect?这里的问题只是对
filteringselect(以及从\u AutoCompleterMixin
继承的任何内容)如何与其数据交互的一个小小误解。无论您如何创建FilteringSelect
小部件,控制其选项的底层机制都是一个遵循
这意味着为了修改过滤器选择
小部件的选项,您需要与该存储
交互。我必须演示一下,但基本上您希望将函数更改为:
function showTablesDropDown(tableDiv){
var filteringSelectWidget = dijit.byId(tableDiv);
// Clear current value since options are changing.
filteringSelectWidget.set("value", "");
var store = filteringSelectWidget.get("store");
var newData = [{label: "None", value: "None"}];
// Give the underlying store a new data array.
store.setData(newData);
}
为什么有dijit.byId(tableDiv)
?dijit.byId(tableDiv)是过滤器的ID选择有什么解决方案吗@DimitriMi不想将{label:“None”,value:“None”}添加到存储中。所以我试过这个。byId(tableDiv).set(“value”,{label:“None”,value:“None”});但它不起作用我想你的例子是替换存储并向存储添加新数据。我不想替换store,只想在dijit.byId(tableDiv)中添加新选项而不是storeWell,您的FilteringSelect
小部件使用一个存储来保存所有选项。因此,您不只是将项目直接添加到FilteringSelect
,而是将项目添加到FilteringSelect
的存储中。那么您只想向商店添加一个新项目(并保留所有原始项目)?或者您只是试图将过滤器选择
的值设置为尚未作为选项存在的值?