Drop down menu labelType不适用于dijit/forms/select

Drop down menu labelType不适用于dijit/forms/select,drop-down-menu,dojo,dijit.form,Drop Down Menu,Dojo,Dijit.form,向dijit/forms/select添加一个选项,如下所示 ” 由于dijit/forms/select在默认情况下使用labelType=“html”,因此我将labelType设置为“text”,但即使这样,该选项也被添加为html元素 HTML Javascript(Dojo) 需要([ “dojo/ready”, “dojo/_base/lang”, “dijit/registry”],函数(就绪、lang、注册表){ 就绪(函数(){ var select1=registry.b

向dijit/forms/select添加一个选项,如下所示

由于dijit/forms/select在默认情况下使用labelType=“html”,因此我将labelType设置为“text”,但即使这样,该选项也被添加为html元素

HTML


Javascript(Dojo)

需要([
“dojo/ready”,
“dojo/_base/lang”,
“dijit/registry”],函数(就绪、lang、注册表){
就绪(函数(){
var select1=registry.byId(“select1”);
选项1={
值:“o1”,
标签:“选项1”,
所选:false
};
选项2={
值:“o2”,
标签:“选项2”,
所选:真
};
选项0={
值:“o”,
标签:“,
所选:false
};
选择1.addOption(lang.clone(option1));
选择1.addOption(lang.clone(option2));
选择1.addOption(lang.clone(option0));
});
}))

这应该可以:

require([
    "dojo/ready",
    "dojo/_base/lang",
    "dijit/registry"], function (
ready,
lang,
registry) {

    ready(function () {

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

      var  option1 = [
            {
            value: "o1",
            label: "option 1",
            selected: false
        },
            {
            value: "o2",
            label: "option 2",
            selected: false
        },
            {
            value: "o",
            label: "&ltnav Assad&gt",
        selected: true
    } ]

        select1.addOption(lang.clone(option1));

    });
});

我注意到您的JSFIDLE正在与Dojo 1.9竞争。如果您切换到针对Dojo1.10运行,它将按照您的预期工作


只有在Dojo 1.10中才添加了
labelType
属性。

对于那些希望将Dojo 1.9与补丁一起使用的用户

需要([
“dojo/ready”,
“dojo/_base/lang”,
“dijit/注册表”,
“dojox/html/entities”],函数(ready、lang、registry、entities){
就绪(函数(){
var select1=registry.byId(“select1”);
选项1={
值:“o1”,
标签:“选项1”,
所选:false
};
选项2={
值:“o2”,
标签:“选项2”,
所选:真
};
选项0={
值:“o”,
标签:entities.encode(“”),
所选:false
};
选择1.addOption(lang.clone(option1));
选择1.addOption(lang.clone(option2));
选择1.addOption(lang.clone(option0));
});

}))

labelType用于告诉select如何处理使用dojo存储创建子项时返回的标签。在您的情况下,您将不得不避开标签“<nav asdasd>”@tik27,实际上据我所知,它也适用于
选项
:-也就是说,它是否有效将取决于Sam007是否使用Dojo 1.10…我实际上使用的是1.9,这就是问题所在。目前由于一些限制,我想我需要一些字符串转义来使它工作
require([
"dojo/ready",
"dojo/_base/lang",
"dijit/registry"], function (ready,lang,registry) {

ready(function () {

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

    option1 = {
        value: "o1",
        label: "option 1",
        selected: false
    };

    option2 = {
        value: "o2",
        label: "option 2",
        selected: true
    };

    option0 = {
        value: "o",
        label: "<nav asdasd>",
        selected: false
    };

    select1.addOption(lang.clone(option1));
    select1.addOption(lang.clone(option2));
    select1.addOption(lang.clone(option0));

});
require([
    "dojo/ready",
    "dojo/_base/lang",
    "dijit/registry"], function (
ready,
lang,
registry) {

    ready(function () {

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

      var  option1 = [
            {
            value: "o1",
            label: "option 1",
            selected: false
        },
            {
            value: "o2",
            label: "option 2",
            selected: false
        },
            {
            value: "o",
            label: "&ltnav Assad&gt",
        selected: true
    } ]

        select1.addOption(lang.clone(option1));

    });
});
require([
"dojo/ready",
"dojo/_base/lang",
"dijit/registry",
"dojox/html/entities"], function (ready,lang,registry,entities) {

ready(function () {

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

    option1 = {
        value: "o1",
        label: "option 1",
        selected: false
    };

    option2 = {
        value: "o2",
        label: "option 2",
        selected: true
    };

    option0 = {
        value: "o",
        label: entities.encode("<nav asdasd>"),
        selected: false
    };

    select1.addOption(lang.clone(option1));
    select1.addOption(lang.clone(option2));
    select1.addOption(lang.clone(option0));

});