听取其他组件事件

时间:2015-05-22 12:18:13

标签: extjs extjs5

我正在开发一个充当应用程序任务栏的组件。

目前,我有一个App类(不是完全限定的类名),它扩展了Ext.window.Windowinit创建了一个button引用自身并将其呈现给任务栏。但我并不认为将应用程序添加到任务栏是应用程序的责任,而是任务栏负责监听应用程序初始化并在其中创建对它们的引用。< / p>

因此,在任务栏ViewController中,我需要捕获任何render实例触发的所有App事件。我无法在文档中找到一种方法。

我该怎么办?或者有更好的方法吗?

ExtJS 5.1

1 个答案:

答案 0 :(得分:0)

定义Ext.app.EventDomain以监控Ext.window.Window事件。

Ext.define('MyApp.app.domain.Taskbar', {
    extend: 'Ext.app.EventDomain',
    singleton: true,
    requires: [
        'Ext.window.Window'
    ],
    // catalog the domain in the Ext.app.EventDomain.instances map
    type: 'taskbar',
    idProperty: 'id',
    constructor: function() {
        this.callParent();
        this.monitor( Ext.window.Window );
    }
})

定义一个控制器来监听窗口渲染事件。

Ext.define('MyApp.controller.Taskbar', {
    extend: 'Ext.app.Controller',
    requires : [
        'MyApp.app.domain.Taskbar'
    ],
    init: function() {
        this.listen({
            taskbar: {
                // wildcard selector to match any window
                '*':{
                    render: function(window, eOpts){ 
                        console.log('render window: ' + window.id); 
                    }
                }
            }
        })
    }
})