Javascript 如何覆盖extJs控制器组件

Javascript 如何覆盖extJs控制器组件,javascript,extjs,window,overriding,extjs5,Javascript,Extjs,Window,Overriding,Extjs5,我已经创建了一些我在不同产品中使用的通用组件。现在我有一个窗口和窗口控制器,它是泛型的,我正在重写窗口类,以便在我们的产品中使用它 我的通用窗口 Ext.define('App.win.Panel', { extend: 'Ext.window.Window', closeAction:'destroy', maximizable:true, hideToolbar:false, requires: [ 'App.MyWinCon.Pane

我已经创建了一些我在不同产品中使用的通用组件。现在我有一个窗口和窗口控制器,它是泛型的,我正在重写窗口类,以便在我们的产品中使用它

我的通用窗口

Ext.define('App.win.Panel', {
    extend: 'Ext.window.Window',
    closeAction:'destroy',
    maximizable:true,
    hideToolbar:false,
    requires: [
        'App.MyWinCon.PanelController'
    ],
    xtype: 'MyWin',
    name:'MyWin',

    controller: 'MyWinCon',
    layout: {
        type: 'border'
    },
    gridConfigs:{},
    initComponent:function(){
        var p=this;
       p.items = [{
        //items
       }];
        p.callParent(arguments);
    }
});
在我的产品应用程序中,我使用的覆盖方式如下:

var Window1 = Ext.create('App.win.Panel', {
            title: Windo,
            modal:true,
            height: '90%',
            width: '95%',
            parentGridObj:gridObj,
        });
        Window1.show();
那部分没有问题。窗户来了。 现在,我怀着同样的热情,用通用语言编写了控制器。我将向您展示一小段代码

Ext.define('App.MyWinCon.PanelController', {
    extend: 'Ext.app.ViewController',

    alias: 'controller.MyWinCon',

    init: function(){
        var p = this;
        p.control({
        #:{
            beforeclose : function(this){
            // SOme code
            }
        }
       });     
    }
现在有谁能帮我在我的应用程序中如何在关闭之前访问这个
或类似的方法,它是用泛型类编写的。

谢谢你的帮助。

你做不到,或者至少它真的很复杂;但是有一种非常简单的方法,只需最少的重构:

Ext.define('App.MyWinCon.PanelController', {
    extend: 'Ext.app.ViewController',

    alias: 'controller.MyWinCon',

    init: function(){
        var p = this;
        p.control({
        #:{
            beforeclose : p.beforeClose // just a reference to function below!
        }
       });     
    },
    beforeClose: function(component){ // thou ought not use a variable named "this"!
        // SOme code
    }
现在,您可以从视图中访问该功能:

view.getController().beforeClose()

为此,我需要分离js文件,然后访问该文件。实际上我只想访问一个方法,所以需要再次编写完整的控制器。这意味着从通用到我的产品的完整复制粘贴。