【发布时间】:2014-10-16 17:31:36
【问题描述】:
我有一个如下的选择小部件
var pulseLen = new Select({
id : "_PulseLength",
label:"PulseLength",
name: "pulseLength",
value : 100,
options: [
{ label : "5", value :"5" },
{ label : "10", value :"10" },
{ label : "30", value :"30" },
{ label : "100", value :"100" },
{ label : "300", value :"300" }
]
});
现在,根据在上述 pulseLength 小部件中选择的值,我必须更改以下 Select Range 小部件的选项 它是 GUI 验证的一部分。
var range = new Select({
id:"_Range",
label:"Range"),
name: "range",
value: "5000",
options: [
{ label : "5", value :"5000" },
{ label : "10", value :"10000" },
{ label : "20", value :"20000" },
{ label : "40", value :"40000" },
{ label : "80", value :"80000" },
{ label : "160", value :"160000" },
{ label : "260", value :"260000" }
]
});
生成动态选项的 API
function getRangeArray(pulselen){
var myOptions = "";
var array = [0.5,1,2,5,10,20,40];
console.log("Length got is " + pulselen);
for(i=0;i<array.length;i++){
var myTmp = "{label : '" + array[i] + "', value : '"+array[i] * 1000 + "'}";
//console.log(myTmp);
if(i==array.length-1){
myOptions = myOptions + myTmp;
}else{
myTmp=myTmp+",";
myOptions = myOptions + myTmp;
}
//console.log(myOptions);
}
//console.log(myOptions);
myOptions = "[" + myOptions + "];";
return myOptions;
}
pulseLength 的 OnChange 事件尝试更改选项
var newOptions = getRangeArray(value);
console.log(newOptions);
registry.byId("_Range").set("options", newOptions);
样本输出
[{label : '0.5', value : '500'},
{label : '1', value : '1000'},
{label : '2', value : '2000'},
{label : '5', value : '5000'},
{label : '10', value : '10000'},
{label : '20', value : '20000'},
{label : '40', value : '40000'}];
【问题讨论】:
-
Dojo 的版本是什么?...尤其是如果您必须破解小部件的内部结构,这真的很重要
-
范围选择小部件有一个 ;在“值:”之后和“标签:范围”之后的一个)。这只是一个错字吗?
-
我应该将它作为对象进行类型转换吗?我正在使用 DOJO 1.9
标签: java javascript dojo dijit.form