我是Dojo框架的新手,并尝试在语法上为代码中的ComboBox Dijit订阅onChange事件。但由于某种原因,我的事件处理函数无法捕获此事件。你能帮我找出我错在哪里吗?
<div id="container" style="padding: 5px;">
<select data-dojo-type="dijit/form/ComboBox" name="state" id="stateInput">
<option>Apples</option>
<option selected>Oranges</option>
<option>Pears</option>
</select>
</div>
require([ 'dijit/form/ComboBox',
"dojo/on",
"dijit/registry"
], function(ComboBox, on,registry){
var comboBoxDigit2 = registry.byId("stateInput");
on(comboBoxDigit2,"onChange", function (e) {
alert("I am an alert box!");
});
});
谢谢,
卫
答案 0 :(得分:2)
此代码中存在一些错误。
要求传递数组以相同的顺序运行。您目前正在通过&#34; dojo / on&#34;和&#34; dijit / registry&#34;进入ComboBox,on和注册表。您需要要求&#34; dijit / form / ComboBox&#34;
data-dojo-type的格式应该是路径,即data-dojo-type="dijit/form/ComboBox"
开启的格式通常为on(element, eventname, function)
,但我相信您可以按照自己的方式进行。
编辑:
关于事件的工作,即
on(combobox, "change", function(value) {...});
你原来的小提琴没有被解析为dijit,它只是一个简单的html选择,所以对注册表的调用失败了。我已经更新了小提琴。 http://jsfiddle.net/vdmhU/13/