connect 函数
dojo.event.connect(handlerNode,"eventName",obj,handler)
功能:
为handlerNode节点绑定事件监听函数,当handlerNode对象的
eventName被触发时,obj的handler函数被触发。
handlerNode可以时DOM对象,也可以时普通定义的js对象。
如果obj跟handlerNode是一个对象时,可以省略。
普通的DOM对象:
handlerNode
var handlerNode=document.getElementById("handler");
handler:handOnclick
before:事件监听函数将在被监听函数之前触发。
around:around监听函数会包含一个参数,是method-invocation对象,这个对象至少包含一个args属性,该属性代表目标方法的参数。该对象还包含一个方法:proceed(),用于调用目标函数,并返回结果。
<script type="text/javascript">
var abc={//定义abc变量
foo:function(var1,var2){//定义abc的foo函数
dojo.hostenv.println("var1的参数值为"+var1);
dojo.hostenv.println("var2的参数值为"+var2);
return "foo方法的返回值"
}
}
function bar(invocation){
if(invocation.args[0]!="undifined"){
invocation.args[0]="wawa_new----AOP修改后的第一个参数";
}
if(invocation.args[1]!="undifined"){
invocation.args[1]="nono---AOP修改后的第二个参数";
}
var result=invocation.proceed();//修改参数后,调用目标函数foo
result="AOP修改了目标的返回值";//修改返回值
return result;
}
dojo.event.connect("around",abc,"foo","bar");
dojo.hostenv.println(abc.foo("wawa","nono"));
</script>
dojo.event.connect("around",abc,"foo","bar");
利用around事件,bar函数可以改变foo函数的参数值和返回值。
注:after和before事件通过arguments[]也可以访问到被监听方法的参数,但是不能修改.
function handOnclick(evt){
alert("单击我触发的事件"+evt);
}
eventName:onclick
Connect函数:
dojo.event.connect(handlerNode,"onclick","handOnclick");
自定义的对象:
var abc={
foo:function(){//定义foo函数
dojo.hostenv.println("abc的foo事件");
},
bar:function(){//定义bar函数
dojo.hostenv.println("abc的bar事件");
}
}
dojo.event.connect(abc,"foo",abc,"bar");//abc的foo函数被触发时,abc对象的bar函数也执行
abc.foo();
connect的AOP实现:
connect函数还支持一个参数,可以是after,before,arround 默认after。
完整的connect格式:
dojo.event.connect (time,srcobj,"srcFunction",listenerObj,"listennerFunction");
本文详细介绍了 Dojo 框架中 connect 函数的使用方法及其 AOP(面向切面编程)特性。通过示例展示了如何为 DOM 对象及自定义对象绑定事件监听器,同时介绍了 before、around 和 after 不同类型的事件监听方式。
833

被折叠的 条评论
为什么被折叠?



