mon和on方法都是给对象添加事件句柄的方法:
1.on方法实际上addListener的简写, 是在Ext.util.Observable中定义的,其作用是
"Appends an event handler to this object.",也就是给当前对象添加事件处理函数
代码如下(没太看懂) 是个递归的函数
addListener : function(eventName, fn, scope, o){
var me = this,
e,
oe,
isF,
ce;
if (ISOBJECT(eventName)) {
o = eventName;
for (e in o){
oe = o[e];
if (!filterOptRe.test(e)) {
me.addListener(e, oe.fn || oe, oe.scope || o.scope, oe.fn ? oe : o);
}
}
} else {
eventName = toLower(eventName);
ce = me.events[eventName] || TRUE;
if (typeof ce == "boolean") {
me.events[eventName] = ce = new EXTUTIL.Event(me, eventName);
}
ce.addListener(fn, scope, ISOBJECT(o) ? o : {});
}
},
2. mon方法是在Ext3为了解决内存泄漏问题(啥问题不知道,应该是部分句柄可能存在无法自动删除的情况)作出的改进,定义于Component类, 可以在当前对象内添加在外部对象的事件句柄, 在当前对象销毁的时候会自动清除句柄。代码如下:
mon : function(item, ename, fn, scope, opt){
if(!this.mons){
this.mons = [];
this.on('beforedestroy', this.clearMons, this, {single: true});
}
if(Ext.isObject(ename)){
var propRe = /^(?:scope|delay|buffer|single|stopEvent|preventDefault|stopPropagation|normalized|args|delegate)$/;
var o = ename;
for(var e in o){
if(propRe.test(e)){
continue;
}
if(Ext.isFunction(o[e])){
// shared options
this.mons.push({
item: item, ename: e, fn: o[e], scope: o.scope
});
item.on(e, o[e], o.scope, o);
}else{
// individual options
this.mons.push({
item: item, ename: e, fn: o[e], scope: o.scope
});
item.on(e, o[e]);
}
}
return;
}
this.mons.push({
item: item, ename: ename, fn: fn, scope: scope
});
item.on(ename, fn, scope, opt);
},
从代码中,很清楚的看到当前对象在模板方法beforedestroy中会自动的进行句柄清理工作,减少了内存泄漏的情况。
Ext 官方推荐所有的componet类添加句柄时使用mon替代on
引用
//Old Style
this.el.on('click', this.onClick, this);
//New Style
this.mon(this.el, 'click', this.onClick, this);
分享到:
相关推荐
两个包打包下载,根据需要添加相应的包,区别在于1.4版本之后,bcprov-jdk15on-152中移除了一些加密算法,bcprov-ext-jdk15on-152中依然保留。
Ext4,Ext3的特点和区别
1.bcprov-ext-jdk15on-1.54.jar 2.bcprov-jdk15on-1.54.jar 下载地址在:http://download.csdn.net/detail/cw_hello1/9557049 2.将下载的两个JAR文件复制到:JDK安装目录\jre\lib\ext下,例如我的就是D:\Program ...
bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar压缩文件
bcprov-ext-jdk15on-1.68.jar
解决javax.net.ssl.SSL...jar包放在$JAVA_HOME/jre/lib/ext目录下,然后在$JAVA_HOME/jre/lib/security/目录下的java.security文件里面加一行security.provider.10=org.bouncycastle.jce.provider.BouncyCastleProvider
bcprov-jdk15on-1.54.jarr和bcprov-ext-jdk15on-1.54.jar和教程 win10 64位 java1.8连接SQL Server2008报错 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接
该压缩文件包含bcprov-ext-jdk15on-1.54.jar和bcprov-jdk15on-1.54.jar,bcprov-jdk15on-154中移除了一些加密算法,bcprov-ext-jdk15on-154中依然保留。可以解决JDK1.6 HttpClient访问https网页报的错
Ext.get与Ext.fly的区别与用法
1.下载 bcprov-ext-jdk15on-160.jar,复制到jdk_home\jre\lib\ext 2.配置bcprov,在 jdk_home\jre\lib\security\目录中找到 java.security 在内容增加一行 security.provider.11=org.bouncycastle.jce.provider....
bcprov-ext-jdk15on-164.jar:支持java5-11。将jar包放置在%java_home%/jre/lib/ext目录。
bcprov-ext-jdk15on-1.52和bcprov-jdk15on-1.52 jar包,在maven上download下来的。
将下载的文件拷贝到JAVE_HOME/jre/lib/ext目录下 如果你不知道你的Mac Java_home 目录是/Library/Java/JavaVirtualMachines/jdk1.7.0_75.jdk/Contents/Home (ps:一种奇葩的方法可以知道你的配置路径,你可以使用...
SSL bcprov-ext-jdk15on-1.52.jar & bcprov-ext-jdk15on-1.52
解决java.lang.RuntimeException: Could not generate DH keypair。这个的Jar包
bcprov-jdk15on-148和bcprov-ext-jdk15on-148
bcprov-ext-jdk15on-149,bcprov-jdk15on-147.jar AES工具类,昨天找了好久才找到下载的地方,发到这里,有需要的下载
bcprov-ext-jdk15on-1.52.jar和bcprov-jdk15on-1.52.jar
bcprov-jdk15on-154.jar/bcprov-ext-jdk15on-154.jar
could not generate DH keypair 解决时需要的资源。bcprov-ext-jdk15on-154