2016-04-21 10 views
0

Ich habe eine Dojo-Combobox deklarativ mit einem Standard-HTML-Auswahl erstellt. Es gibt ein onChange-Ereignis in einem separaten Textfeld, das eine Funktion zum Abrufen von Daten von einem Server über XHR aufruft, und Elemente der Antwortdaten werden zu neuen Optionen für das Dropdown-Menü.Wie Elemente dynamisch zu einer Dojo ComboBox hinzufügen

Ich habe Beispiele über das Internet versucht, aber bisher hat nichts funktioniert. Dies ist der Code, den ich gerade versuche, ohne Fehler. In der Tat, wenn ich nach dem Put auf den Inhalt des Ladens schaue, sind die Daten da drin.

Wenn ich auf dem Dropdown klicken unten, nachdem die Daten festgelegt wurde, habe ich die Fehlermeldung „_AutoCompleterMixin.js.uncompressed.js: 557 Uncaught Typeerror: Eigenschaft‚toString‘undefinierter kann nicht lesen“:

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

Und auch "select.store.data = newOptions;". Und auch den Code herum bewegen so "select.store.add (Option)" ist innerhalb der Schleife.

Obwohl der Combobox-Speicher in allen drei Fällen gefüllt wird, bekomme ich den gleichen Fehler. In den Daten sind keine Nullwerte vorhanden. In den Daten sind keine leeren Werte enthalten.

Was fehlt mir? Kein Beispiel irgendwo, innerhalb der DOJO-Dokumentation oder anderswo hat dieses Problem, sogar bei der Arbeit mit jsFiddle-Beispielen.

Ich kann einfach nicht sehen, was der Unterschied ist, außer der Tatsache, dass ich mehr als ein oder zwei fest codierte Werte hinzufügen.

Antwort

0

Es dauert:

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

nicht

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