2012-12-18 80 views
3

我使用Dojo 1.8.2,這裏是我的問題(我見過thisthis問題,但他們eren't有用):道場和動態添加選項dijit.form.select

JS代碼接收從服務器獲取JSON格式的一些數據。就這樣,我動態創建一些選項dijit.form.select

var select = registry.byId('zgloszenieDoFirmyEdycja'); 
for (var uzytkownik in dane.uzytkownicy){ 
    var idUzytkownika = dane.uzytkownicy[uzytkownik]['_id']['$oid']; 
    var imie = dane.uzytkownicy[uzytkownik].imie; 
    var nazwisko = dane.uzytkownicy[uzytkownik].nazwisko; 
    var wybrany = (idUzytkownika == id); 
    var opcja = {}; 

    opcja.label = imie + ' ' + nazwisko; 
    opcja.value = idUzytkownika; 
    opcja.selected = wybrany; 

    console.log(wybrany); 
    console.log(idUzytkownika + ' | ' + imie + ' ' + nazwisko); 
    console.log(opcja); 

    select.addOption(opcja); 
    /*select.addOption({ 
     label: imie + ' ' + nazwisko, 
     value: idUzytkownika, 
     selected: wybrany 
    });*/ 
} 

這是我的控制檯輸出:

false 
5077d2a1e4b0f5734a9850a1 | zero zero 
Object { label="zero zero", value="5077d2a1e4b0f5734a9850a1", selected=false} 
true 
50c0776f096aa0e726d221a3 | raz raz 
Object { label="raz raz", value="50c0776f096aa0e726d221a3", selected=true} 
false 
50d019c3096aa862c6898cdb | dwa dwa 
Object { label="dwa dwa", value="50d019c3096aa862c6898cdb", selected=false} 

dijit.form.select更新之後,selected參數會莫名其妙地混合起來,設置爲true不是爲我設置的選項,但爲第一個:

console.log(select); 
... 
Object[Object { label="zero zero", value="5077d2a1e4b0f5734a9850a1", selected=true},  
     Object { label="raz raz", value="50c0776f096aa0e726d221a3", selected=false}, 
     Object { label="dwa dwa", value="50d019c3096aa862c6898cdb", selected=false} 
] 
... 

我不明白爲什麼發生,任何cl UE的?

回答

7

查看dijit/form/_FormSelectWidget的源代碼,問題是由於如果沒有選項被選中,則默認情況下第一個選項被選中。在添加第一個選項時,滿足此條件並選擇第一個選項。

解決方法:一次添加所有選項作爲數組:

var select = registry.byId("select1"); 

option1 = { value: "o1", label: "option 1", selected: false }; 
option2 = { value: "o2", label: "option 2", selected: true }; 

select.addOption([option1, option2]); // add all options at once as an array 

看到它在行動:http://jsfiddle.net/phusick/BfTXC/

+0

尼斯回答,謝謝! – maialithar