Extjs 4.1 - 如何将监听器从对象 A 复制到对象 B

Extjs 4.1 - How to copy Listeners from Object A to Object B

有人知道如何将侦听器从 Object 复制到另一个吗?

我试过了

    Object a,b (pre-created...) 
    b.events = a.events
    b.hasListeners = a.hasListeners

但是当我扩展 对象 b 它没有停止在我在我监听扩展的函数中的断点处,有没有 "good way"在做吗?

在 class 中定义您的代码。 Ext.define('appname.myapp.formname.form',{ xtype:'anyname', 听众:{ 点击........ 键盘…… } }); 在你

的地方使用你的 xtype

你不应该直接 link ExtJS 生成的对象层次结构子树到其他对象中;这是糟糕的风格,可能会导致各种问题,例如内存泄漏或过早破坏。

例如如果一个对象被销毁,但另一个对象继续存在,共享事件对象会发生什么?

它可能会也可能不会被析构函数销毁,然后另一个对象试图访问它,这会导致未定义的行为。

如果您需要在多个对象上使用相同的侦听器,您应该创建一个从中派生这些对象的原型,或者一个将这些侦听器函数准确添加到您作为参数提供的任何对象的函数。

对于您的示例,因为节点可以由 reader 自动创建,我会使用第二种方法,在包含节点的商店中添加函数:

addListenersToTreeNode: function(node) {
    node.on('collapse', this.onCollapse);
    node.on('expand', this.onExpand);
    node.on('example', this.onExample);
}

然后在两个节点上调用函数:

nodeStore.addListenersToTreeNode(a);
nodeStore.addListenersToTreeNode(b);

瞧,树节点现在有相同的侦听器。