2016-04-21 77 views
0

我有一個使用標準HTML選擇聲明創建的Dojo組合框。在單獨的文本框上有一個onChange事件,它調用一個函數通過XHR從服務器獲取數據,並且響應數據的元素成爲下拉菜單的新選項。如何動態添加元素到Dojo組合框

我一直在互聯網上嘗試的例子,但迄今沒有工作。這是我目前正在嘗試沒有錯誤的代碼。實際上,當我看到商店後的內容時,數據就在那裏。

當我點擊下來後數據已定,我得到了錯誤的下降「_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 = newOptions;」。 而且還要移動代碼以便「select.store.add(option)」位於循環中。

儘管在所有三種情況下組合框都被填充,但我仍然會遇到同樣的錯誤。數據中沒有空值。數據中沒有空白值。

我錯過了什麼?沒有任何例子,在DOJO文檔或其他任何地方有這個問題,甚至工作jsFiddle的例子。

我簡直看不出除了加入一個或兩個硬編碼值以外的事實。

回答

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