0

アプリがあり、すべてが正常にレンダリングされます。ただし、mainTabChanged イベントをキャッチできず、その理由はわかりません。例のようにすべてコンソールログFIREDを実行しましたが、決してRECEIVED.

なんで?

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

    init:function () {
        var me = this;
        me.mainWindow = me.getView('tab.List').create();

        me.control({
            'mainTab': {
                mainTabChanged: me.onMainTabChanged
            }
        });

    },

    me.onMainTabChanged: function(oldTab, newTab, settings) {
        console.log("received");
        console.log(settings);
    }
});


Ext.define('MyApp.view.tab.List', {

    extend:'Ext.form.FieldSet',

    alias:'widget.mainTab',

    initComponent:function () {
        var me = this;

        me.title = 'App'
        me.items = me.createElements();

        me.addEvents(
            'mainTabChanged'
        );

        me.callParent(arguments);

    },


    createElements: function () {
        var me = this, tabs = [];

        tabs = [{
            title: 'Tab 1',
                bodyPadding: 10,
            html : 'A simple tab'
        },
        {
            title: 'Tab 2',
                html : 'Another one'
        }];

        var tabPanel = Ext.create('Ext.tab.Panel', {
            height: 150,
            activeTab: 0,
            plain: true,
            items : tabs,
            listeners: {
                beforetabchange: function(panel, newTab, oldTab) {
                    console.log("FIRED");
                    me.fireEvent('mainTabChanged', oldTab, newTab, 'Test');
                }
            }
        });

        return tabPanel;
    }
});
4

2 に答える 2

1

問題は、ウィジェット「mainTab」が「リスト」であるのに、「タブパネル」からイベントを発生させていることだと思います。

コントローラでこれを試してください:

        me.control({
        'mainTab > tabpanel': {
            mainTabChanged: me.onMainTabChanged
        }

あるいは単に

        me.control({
        'tabpanel': {
            mainTabChanged: me.onMainTabChanged
        }
于 2012-12-28T13:30:08.400 に答える
0

私の問題は、あるアプリを別のアプリに注入しようとしていたことでした。アプリを注入するのではなく、コントローラーとビューをアプリに直接注入することで問題を解決し、それらをアプリのネイティブ部分にすることで、イベントバスをバイパスしません。

于 2012-12-28T22:59:49.797 に答える