我是一个带有dojo的新手,我遇到了一个奇怪的问题,我花了很多时间并且还没有发现,假设我有4个按钮:
<button id="btnMoveFirst" data-dojo-type="dijit.form.Button" iconclass="plusIcon">
< <</button>
<button id="btnMovePrev" data-dojo-type="dijit.form.Button" iconclass="plusIcon">
<</button>
<button id="btnMoveNext" data-dojo-type="dijit.form.Button" iconclass="plusIcon">
></button>
<button id="btnMoveLast" data-dojo-type="dijit.form.Button" iconclass="plusIcon">
> ></button>
使用dojo和事件 onclick ,如下所示:
dojo.connect(dijit.registry.byId('btnMoveFirst'), "onclick", function(evt){
alert('test1');
});
dojo.connect(dijit.registry.byId('btnMovePrev'), "onclick", function(evt){
alert('test2');
});
dojo.connect(dijit.registry.byId('btnMoveNext'), "onclick", function(evt){
alert('test3');
});
dojo.connect(dijit.registry.byId('btnMoveLast'), "onclick", function(evt){
alert('test4');
});
但是当我点击4个按钮中的任何一个,甚至是表格中的任何一个按钮时,我收到4个警报而不是正确的警告。
有谁知道这个?
答案 0 :(得分:1)
我得到4个警报而不是只有正确的一个的原因是:
dojo.connect
时没有实例化→将代码包装到dojo/ready
根据讨论,以下是如何在Modern Dojo中的问题中编写代码的方式:
require([
"dojo/ready",
"dojo/aspect",
"dijit/registry",
"dijit/form/Button"
], function(
ready,
aspect,
registry
) {
ready(function() {
// dojo/Evented
registry.byId("btnMoveFirst").on("click", function() {
console.log("first");
});
// dojo/aspect
// it's the same as dojo.connect in previous versions
// nevertheless this is not recommended
aspect.after(registry.byId("btnMoveLast"), "onClick", function() {
console.log("last");
});
});
});