如何向Dojo ComboBox动态添加元素

bkkx9g8r  于 2022-12-16  发布在  Dojo
关注(0)|答案(1)|浏览(169)

我有一个Dojo组合框,它是使用标准HTML select声明创建的,在一个单独的文本框上有一个onChange事件,它调用一个函数通过XHR从服务器获取数据,响应数据的元素成为下拉列表的新选项。
我在网上试了很多例子,但到目前为止都没有成功。这是我目前正在尝试的代码,没有任何错误。事实上,当我在put之后查看存储的内容时,数据就在那里。
当我在设置数据后单击下拉菜单时,我收到错误“_AutoCompleterMixin.js.uncompressed.js:557未捕获的类型错误:无法读取未定义”“的属性”toString“:

var newOptions = new Array();

for (var i = 0; i < jsonData.length; i++) {
    newOptions[i] = { value: jsonData[i].dataID, 
                      label: jsonData[i].dataName, 
                      selected: i == 0};
}

var select = registry.byId("combobox");
select.store.put(newOptions, { overwrite: true });

以及“select.store.data =新选项;并且还移动代码,使“select.store.add(option)”位于循环内。
尽管在这三种情况下都填充了combobox存储,但我仍然得到相同的错误:数据中没有空值,数据中没有空值。
我遗漏了什么?在DOJO文档或其他任何地方,任何地方的示例都没有这个问题,即使是工作的JSFiddle示例。
除了添加一个或两个以上的硬编码值之外,我根本看不出有什么区别。

zzwlnbp8

zzwlnbp81#

它需要:

newOptions[i] = { id: jsonData[i].dataID, 
                      name: jsonData[i].dataName, 
                      selected: i == 0};

newOptions[i] = { value: jsonData[i].dataID, 
                      label: jsonData[i].dataName, 
                      selected: i == 0};

相关问题