控制器this.control()方法extjs 4

时间:2014-01-21 11:06:51

标签: javascript extjs4 extjs-mvc

我有一个名为 DasboardToolbar 的工具栏,其中我有一个splitbutton。 当我在分割按钮中单击 menuitem 时,它会触发控制器的 this.control 方法应捕获的事件,但事实并非如此。用于触发事件的对象是组件的对象仍然响应已触发的事件。 任何帮助表示赞赏。

我正在使用的控制器

    Ext.define('MyApp.controller.MainController',
            {
                extend : 'Ext.app.Controller',

                views : [ 'header.MSHeader', 'dashboard.toolbar.DashboardToolbar',
                      ],

                init : function() {
                    console.log("controller");
                    this.control({
                        'MSHeader' : {
                            tabChanged : this.tabChangeTracker
                        }
                    }, {
                        'dash.DashToolbar' : {
                            layoutSelected :this.layoutSelectedTracker, //errorstatment

                        }
                    });

                },
               layoutSelectedTracker:function(){
console.log('catched'); // code never reaches here
    }

    });

组件

 Ext.define('MyApp.view.dashboard.toolbar.DashboardToolbar', {
    extend : 'Ext.panel.Panel',
    alias : 'widget.dash.DashToolbar',
    id : 'dashtoolbar',

    initComponent : function() {
        var me = this;
        this.items = [ {
            xtype : 'toolbar',
            items : [  {
                xtype : 'splitbutton',
                width : '55',
                text : 'layout',
                autoScroll : true,
                menu : new Ext.menu.Menu({
                    id : 'layoutmenu',
                    items : [

                    {
                        xtype : 'button',
                        text : 'First',

                        handler : function() {
                            me.fireEvent("layoutSelected", { //eventFired from here
                                layouts : 1
                            });

                        }

                    }]
                })

            } ]
        } ], 
               this.callParent();
    }

});

1 个答案:

答案 0 :(得分:1)

您是否尝试过使用该组件的ID?

this.control({
    'MSHeader': {
        tabChanged: this.tabChangeTracker
    },
    '#dashtoolbar': {
        layoutSelected: this.layoutSelectedTracker
    }
});

this.control使用Ext.ComponentQuery,查看那里的文档。