dojo 和动态添加到 dijit.form.select 的选项

标签 dojo dijit.form

我使用 dojo 1.8.2,这是我的问题(我已经看到 thisthis 问题,但它们没有帮助):

我的 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}
]
...

我不明白为什么会这样,有什么线索吗?

最佳答案

查看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/

关于dojo 和动态添加到 dijit.form.select 的选项,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13932225/

相关文章:

javascript - 以编程方式设置 dijit/form/TimeTextbox

jquery - jquery ui 对话框后面的 dijit datetextbox

Dojo 垃圾收集/资源释放技术?

javascript - 我们如何调整 dojo 网格中行的大小

javascript - Dojo 中的日期输入掩码

javascript - Dojo - 在 header 外添加外部样式表

javascript - 监听 dijit/form/TextBox 上的 tab 键

javascript - 道场表单/按钮改变颜色

requirejs - 异步时的行为 : false and true

css - 如何在我的 dojo GridX 中将我的按钮置于我选择的特定列中?