概述
dojo中的事件实现并不复杂,当然我只是从代码量的角度出发,但含金量还是很高的,而且很容易实现自定义事件监听,还支持发布订阅模式,下面我们从源代码级别来看看dojo中的事件机制是如何实现的,深入了解后,甚至可以将其拷贝出来直接就能在其它使用。
事件机制使用中主要涉及以下4个函数:
1. dojo.connect(); 建立事件监听连接
2. dojo.disconnect(); 断开事件监听连接
3. dojo.publish(); 发布主题
4. dojo.subscribe(); 订阅主题
5. dojo.unsubscribe(); 取消订阅主题
该篇中先讲connect机制,而发布订阅实现中也使用到了connect机制,将在后一篇中讲解。
示例
讲解之前先看一个示例:function Foo() {
this.name = "Foo";
this.output = function() {
var result = "output function in " + this.name;
console.info(result);
return result;
};
}
function Bar() {
this.name = "Bar";
this.output = function() {
var result = "output function in " + this.name;
console.info(result);
return result;
}
}
var foo = new Foo();
var bar = new Bar();
//非dom node事件监听
var handle = dojo.connect(foo, "output", bar, "output");
foo.output(); //会触发bar.output调用
dojo.disconnect(handle); //断开连接
//为dom node添加事件监听
handle = dojo.connect(dojo.byId("someId"), "click", function(){
// do something
});
//移除事件监听
dojo.disconnect(handle);