如何从 Dijit FilteringSelect 小部件中删除所有选项?
Posted
技术标签:
【中文标题】如何从 Dijit FilteringSelect 小部件中删除所有选项?【英文标题】:How to remove all options from a Dijit FilteringSelect widget? 【发布时间】:2013-04-15 12:11:19 【问题描述】:我尝试从 dijit.form.filteringselect 中删除所有选项,并使用以下函数向 dijit.form.filteringselect 添加一个选项。但是,我收到一个错误:没有方法 getOptions 和 addOption。我正在使用道场 1.7
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?
【问题讨论】:
你为什么有dijit.byId(tableDiv)
?
dijit.byId(tableDiv) 是过滤选择的ID
有什么解决办法吗? @DimitriM
【参考方案1】:
这里的问题只是对FilteringSelect
(以及从_AutoCompleterMixin
继承的任何东西)如何与其数据交互的轻微误解。无论您如何创建 FilteringSelect
小部件,控制其选项的底层机制都是遵循 Dojo Store API 的对象。
这意味着为了修改您的FilteringSelect
小部件的选项,您需要与此store
进行交互。我有set up this fiddle 来演示,但基本上你想将你的功能更改为:
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);
【讨论】:
我不想添加 label:"None", value:"None" 来存储。所以我尝试了这个。 dijit.byId(tableDiv).set("value",label:"None", value:"None");但它不工作 我认为您的示例是替换存储并将 newData 添加到存储。我不想替换商店,只是想在 dijit.byId(tableDiv) 中添加新选项而不是存储 好吧,您的FilteringSelect
小部件使用存储来保存您的所有选项。因此,您不只是将项目直接添加到FilteringSelect
,而是将项目添加到FilteringSelect
的商店。因此,您只想向商店添加新商品(并保留所有原始商品)?还是您只是想将FilteringSelect
的值设置为尚不存在的选项?以上是关于如何从 Dijit FilteringSelect 小部件中删除所有选项?的主要内容,如果未能解决你的问题,请参考以下文章
带有子字符串搜索的 dijit.form.FilteringSelect
如何在 dojo 中获取 FilteringSelect <select> 的“值”?
如何以给定格式从 dijit.form.DateTextBox 获取日期?