有人可以解释一下ExtJS中mon()
和on()
之间的区别吗?
答案 0 :(得分:7)
好吧,如果你想避免内存泄漏,那么你可以使用 mon 而不是 来绑定事件。 例如:
var p = new Ext.Panel({
renderTo:Ext.getBody()
,title:'Panel with a listener on the body'
,beforeDestroy:function() {
this.body.un('click', handler);
}
});
如果将侦听器添加为内联函数,例如:
p.on('click', function() {alert('You clicked my body')});
然后无法删除此侦听器选择性。但是,如果您使用 mon ,则面板destroy上的ExtJs会自动删除侦听器。
答案 1 :(得分:1)
mon - 向任何Observable对象(或Ext.Element)添加侦听器,这些对象在销毁此组件时会自动删除。
on - 将事件处理程序追加到可观察对象
请参阅:
http://docs.sencha.com/ext-js/4-2/#!/api/Ext-method-on
http://docs.sencha.com/ext-js/4-2/#!/api/Ext.util.Observable-method-mon