1

我正在尝试在运行时使用on()un()函数(和的别名addListener)添加和删除侦听器removeListener。我从使用 Sencha 检索的组件实例中获取函数引用getCmp()

Ext.Viewport.on('orientationchange', Ext.getCmp('foo').handleOrientationChange, foo, {buffer: 50});
Ext.Viewport.un('orientationchange', Ext.getCmp('foo').handleOrientationChange);

从煎茶文档:

un( eventName, fn, [scope], [options], [order] )

要删除的处理程序。这必须是对传递给 addListener 调用的函数的引用。

我不清楚为什么这不起作用。显然第二个函数引用与第一个不匹配,但为什么会发生这种情况?不应该Ext.getCmp('foo')返回相同的对象吗?

4

1 回答 1

1

调用时removeListener,您还需要传递与指定的范围相同的范围,addListener然后只会删除侦听器

Ext.Viewport.un('orientationchange', Ext.getCmp('foo').handleOrientationChange, foo);

scope : Object (optional)
The scope originally specified for the handler. It must be the same as the scope argument specified in the original call to addListener or the listener will not be removed.

查看:

煎茶文档

于 2013-04-11T17:34:01.107 回答