dojo:aspect.after不起作用

dojo:aspect.after不起作用,dojo,Dojo,一个小时以来,男人们一直在努力。但是无法理解为什么没有调用aspect.after/before。这是我的密码 require([ "dojo/aspect", "dojo/on", "dojo/dom", "dojo/domReady!" ], function( aspect, on, registry, dom) { var callback = function() { alert("called by click"); }; var callb

一个小时以来,男人们一直在努力。但是无法理解为什么没有调用aspect.after/before。这是我的密码

 require([ "dojo/aspect", "dojo/on", "dojo/dom", "dojo/domReady!" ], function(
    aspect, on, registry, dom) {

   var callback = function() {
    alert("called by click");
     };
   var callback2 = function() {
    alert("called by click 2");
         };
   var my = {
    clicking : on(dom.byId("alertButton"), "click", callback)
     };

    aspect.after(my, "clicking", callback2);

 });

提前谢谢。

也许你混淆了用法

aspect.
之后或
aspect.
之前,根据方法执行附加功能。不是行动

例如:

aspect.after(my,“clicking”,callback2)

调用
my.clicking()
的任何位置都将运行
callback2

NOT用于在(dom.byId(“alertButton”),“click”,callback)
上运行
时执行附加函数

我的英语不好,简单解释一下:

function a(){
    alert();
}

my.clicking = function(){ a(); };
aspect.after(my, "clicking", callback2);

//equals to
my.clicking = function(){ a(); callback2(); };

//but not equals to
function a(){
    alert();
    callback2();
}

如果您希望基于操作添加附加功能,可以尝试以下操作:

<input type="button" id="alertButton" value="click me" />
<input type="text" id="textboxMessage" value="x" />
<script>
    dojo.require("dojo.aspect");
    dojo.require("dojo.on");
    dojo.require("dojo.dom");

    var handler = {};
    handler.alertClick = function(){ console.log('first callback'); };
    handler.msgBoxChange = function(){ console.log('a textbox value changed'); };
    handler.serverListChg = function(){ console.log('dropdown menu selected'); };
    handler.additional = function(){ console.log('Additional callback'); };

    dojo.aspect.after(handler, "alertClick", handler.additional, true);

    dojo.on(dojo.byId('alertButton'), "click", handler.alertClick);
    dojo.on(dojo.byId('textboxMessage'), "change", handler.msgBoxChange);
</script>

dojo.require(“dojo.aspect”);
dojo.require(“dojo.on”);
require(“dojo.dom”);
var handler={};
handler.alertClick=function(){console.log('first callback');};
handler.msgBoxChange=function(){console.log('a textbox value changed');};
handler.serverListChg=function(){console.log('dropdown menu selected');};
handler.additional=function(){console.log('additional callback');};
after(handler,“alertClick”,handler.additional,true);
on(dojo.byId('alertButton'),“click”,handler.alertClick);
on(dojo.byId('textboxMessage'),“change”,handler.msgBoxChange);
在本例中,操作
处理程序。附加的
将附加在
处理程序之后。alertClick