2015-05-22 102 views
0

我正在開發一個充當應用程序任務欄的組件。收聽其他組件事件

目前,我有一個類App(這不是完全限定類名),擴展其Ext.window.Windowinit它參照創建button本身和它呈現到任務欄。但我不認爲這是應用程序將自己添加到任務欄的責任,而是任務欄負責監聽應用程序初始化並在其中創建對它們的引用。

因此,在任務欄的ViewController我需要捕獲由任何App實例觸發的所有render事件。我找不到在文檔中這樣做的方法。

我該怎麼辦?還是有更好的方法呢?

ExtJS的5.1

回答

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); 
        } 
       } 
      } 
     }) 
    } 
})