ExtJs 4.2从扩展控制器访问变量

时间:2016-08-01 11:43:15

标签: javascript extjs extjs4.2

我有两个像这样的控制器:

控制器1(主要)

Ext.define('App.MainController', {
    extend: 'Ext.app.Controller',
    models:[
        //some_models
    ],
    stores:[
        //some_stores
    ],
    views: [
        //some_views
    ],
    refs: [],
    init: function() {
        this.TipoDetalle='';
        this.control({
            'GridConcursos':{
                itemdblclick:this.onDblClickRow
            }
        });
    },

    //some_code

    onDblClickRow:function(element, record, item, index, e, eOpts){
        this.TipoDetalle=record.data['tipo_concurso'];
    }

    //some_code
});

控制器2(SUB CONTROLLER)

Ext.define('App.SubController', {
    extend: 'App.MainController',
    models:[
        //some_models
    ],
    stores:[
        //some_stores
    ],
    views: [
        //some_views
    ],
    refs: [],
    init: function() {
        this.control({
            'FichaDetalle':{
                beforeshow:this.onBeforeShow
            }
        });
    },

    //some code

    onBeforeShow:function(){
        //Some way to print the variable TipoDetalle from the main controller
    }
});

在第二个控制器上,在onBeforeShow函数中,我想打印或显示来自第一个控制器TipoDetalle的变量,但我不知道是否可能,如果有可能我不知道如何获取第二个控制器中的变量

1 个答案:

答案 0 :(得分:2)

您可以使用以下语法:

<appname>.app.getController(<controller's full name>).<var name>

在你的情况下它将是

App.app.getController('App.MainController').TipoDetalle

确保在控制器中初始化TipoDetalle变量,如下所示:

Ext.define('App.MainController', { extend: 'Ext.app.Controller', TipoDetalle:'', ...