Javascript 以编程方式声明dijit.form.select的值
我试图通过JSON声明声明dijit.form.Select小部件声明的标记的选项。根据我在API文档中读到的内容,似乎可以使用setStore()传递一个新的存储,然后它应该更新,但是除了一个满存储的空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>
<!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);