我使用标准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示例。
除了我添加超过一个或两个硬编码值的事实之外,我根本看不出有什么区别。
答案 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};