我有一个dijit.form.select,其中某个选项的值是相同的(我无法更改它们以便它们不同)。我认为这可能是行为中一些怪癖的原因。例如,当我有这样的选择:
<select id="deptSelector" data-dojo-type="dijit.form.Select">
<option value="someuser@gmail.com">Childcare Department</option>
<option value="someuser2@gmail.com">Health Goods Department</option>
<option value="someuser2@gmail.com">Medicine Department</option>
<option value="someuser3@gmail.com">Customer Service</option>
<option value="someuser2@gmail.com">Other department</option>
</select>
有些值是相同的,但它们的标签需要不同。但是,当我打电话时
dijit.byId(this.namespace+'deptSelector').attr('displayedValue');
(我读到的是获取select标签的方法),出于某种原因,它只是让我在select中具有相同值的第一个选项。例如,如果我选择“其他部门”,它将给我“健康产品部门”。我不明白为什么会发生这种情况,因为我认为它只是应该获取DISPLAYED值,而不是基于所选项的值的结果。
这是预期的行为吗?如果是这样,我可以做些什么来获得正确的标签而不改变价值观?
提前谢谢!
答案 0 :(得分:0)
尝试
dijit.byId(this.namespace+'deptSelector').focusedChild.label
答案 1 :(得分:0)
我建议使用商店将数据与html分开。你可以这样做:
Html:
<select id="deptSelector"></select>
<div id="output"></div>
Javascript:
require(['dijit/form/Select',
'dijit/registry',
'dojo/html',
'dojo/store/Memory',
'dojo/domReady!'], function (Select, registry, html, Memory) {
var departments = new Memory({
data: [{
id : 1,
name: "Childcare Department",
email: "someuser@gmail.com"
}, {
id : 2,
name: "Health Goods Department",
email: "someuser2@gmail.com"
}, {
id : 3,
name: "Medicine Department",
email: "someuser2@gmail.com"
}, {
id : 4,
name: "Customer Service",
email: "someuser3@gmail.com"
}, {
id : 5,
name: "Other Department",
email: "someuser2@gmail.com"
}]
}),
deptSelector = new Select({
store: departments,
labelAttr : 'name'
}, 'deptSelector');
deptSelector.on('change', function (value) {
html.set('output', departments.get(deptSelector.get('value')).email);
});
deptSelector.startup();
html.set('output', departments.get(deptSelector.get('value')).email);
});
答案 2 :(得分:0)
var label = registry.byId(&#34; deptSelector&#34;)。get(&#34; displayedValue&#34;);
注册表来自dijit / registry。