如何动态添加元素到Dojo ComboBox

时间:2016-04-21 20:16:38

标签: dynamic combobox dojo options

我使用标准HTML选择声明性地创建了一个Dojo组合框。在单独的文本框上有一个onChange事件,它调用一个函数通过XHR从服务器获取数据,响应数据的元素成为下拉列表的新选项。

我一直在尝试互联网上的例子,但到目前为止还没有任何效果。这是我目前正在尝试的没有错误的代码。事实上,当我在看完商店的内容后,数据就在那里。

当我在设置数据后单击下拉列表时,我收到错误" _AutoCompleterMixin.js.uncompressed.js:557未捕获的TypeError:无法读取属性' 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 }); 

还有&#34; select.store.data = newOptions;&#34;。 并且还要移动代码,以便&#34; select.store.add(选项)&#34;在循环中。

虽然在所有三种情况下都在组合使用组合框存储,但我仍然会遇到同样的错误。数据中没有空值。数据中没有空白值。

我错过了什么?没有任何例子,在DOJO文档中或其他任何地方有这个问题,甚至工作jsFiddle示例。

除了我添加超过一个或两个硬编码值的事实之外,我根本看不出有什么区别。

1 个答案:

答案 0 :(得分:0)

需要:

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};