Javascript 以编程方式声明dijit.form.select的值

Javascript 以编程方式声明dijit.form.select的值,javascript,dojo,dijit.form,Javascript,Dojo,Dijit.form,我试图通过JSON声明声明dijit.form.Select小部件声明的标记的选项。根据我在API文档中读到的内容,似乎可以使用setStore()传递一个新的存储,然后它应该更新,但是除了一个满存储的空Select小部件之外,这并没有产生任何有用的结果。我想知道我的对象中是否缺少一些声明,是否使用了错误的方法,或者是否有其他方法来声明这些选项 我使用的测试标记打印如下: <!DOCTYPE HTML> <html dir="ltr"> <head>

我试图通过JSON声明声明dijit.form.Select小部件声明的标记的选项。根据我在API文档中读到的内容,似乎可以使用setStore()传递一个新的存储,然后它应该更新,但是除了一个满存储的空Select小部件之外,这并没有产生任何有用的结果。我想知道我的对象中是否缺少一些声明,是否使用了错误的方法,或者是否有其他方法来声明这些选项

我使用的测试标记打印如下:

<!DOCTYPE HTML>
<html dir="ltr">

    <head>
        <style type="text/css">
            body, html { font-family:helvetica,arial,sans-serif; font-size:90%; }
        </style>
        <script src="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dojo/dojo.xd.js"
        djConfig="parseOnLoad: true">
        </script>
        <script>
            dojo.require("dijit.form.Select");
            dojo.require("dojo.data.ItemFileReadStore");
            dojo.require("dojo.data.ItemFileWriteStore");
        </script>
        <link rel="stylesheet" type="text/css" href="http://ajax.googleapis.com/ajax/libs/dojo/1.6/dijit/themes/claro/claro.css" />
    </head>

    <body class=" claro ">

        <div class="option" id="option" dojoType="dijit.form.Select"></div>

        <script type="text/javascript">
            dojo.addOnLoad(function() {
                if (document.pub) {
                    document.pub();
                }

                var selectOptions = {
                    name:'selection', 
                    identifier: 'label',
                    options: [{
                        label: 'this',
                        value: '01'
                    },
                    {
                        label: 'that',
                        value: '02'
                    },
                    {
                        label: 'the other',
                        value: '03'
                    },
                    {
                        label: 'banana',
                        value: '04',
                    },
                    ]};

                    var aStore = dojo.data.ItemFileReadStore({data: selectOptions});
                    dijit.byId("option").setStore(aStore, 01);
                    dijit.byId("option").startup();

            });
        </script>
    </body>

</html>

正文,html{字体系列:helvetica,arial,无衬线;字体大小:90%;}
require(“dijit.form.Select”);
require(“dojo.data.ItemFileReadStore”);
require(“dojo.data.ItemFileWriteStore”);
dojo.addOnLoad(函数(){
if(document.pub){
document.pub();
}
var selectOptions={
名称:'selection',
标识符:“标签”,
选项:[{
标签:“这个”,
值:“01”
},
{
标签:'那',
值:“02”
},
{
标签:“另一个”,
值:“03”
},
{
标签:“香蕉”,
值:“04”,
},
]};
var aStore=dojo.data.ItemFileReadStore({data:selectOptions});
dijit.byId(“期权”).setStore(aStore,01);
dijit.byId(“选项”).startup();
});

我想你错过了初始化你的商店。这些选项与用于初始化普通选择的选项类似。试着做一些类似的事情:



OTOH,你确定你需要用商店来做这个吗?除非您想使用特定的存储功能(如通知),否则您可以在以编程方式创建select时直接传递数据:

正如@missingno所提到的,使用存储来实现这一点可能有些过分。你可以用

dijit.form.select.addOption(/*array of options*/).
从您的示例中可以看出:

var listOfOptions = [{
    label: 'this',
    value: '01'
  },
  {
    label: 'that',
    value: '02'
  },
  {
    label: 'the other',
    value: '03'
  },
  {
    label: 'banana',
    value: '04',
  },
  ];
dijit.byId("option").addOption(listOfOptions);

这就是我最终使用的。谢谢
var listOfOptions = [{
    label: 'this',
    value: '01'
  },
  {
    label: 'that',
    value: '02'
  },
  {
    label: 'the other',
    value: '03'
  },
  {
    label: 'banana',
    value: '04',
  },
  ];
dijit.byId("option").addOption(listOfOptions);