3

我尝试从 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?

4

1 回答 1

4

这里的问题只是对FilteringSelect(以及从 继承的任何东西_AutoCompleterMixin)如何与其数据交互的轻微误解。无论您如何创建FilteringSelect小部件,控制其选项的底层机制都是一个遵循Dojo Store API的对象。

这意味着为了修改FilteringSelect小部件的选项,您需要与之交互store。我已经设置了这个小提琴来演示,但基本上你想将你的功能更改为:

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);
}
于 2013-04-15T16:00:17.863 回答