无法捕获选项卡更改事件

Fail to catch tab change event

我正在使用按钮在选项卡之间移动。但为此我必须记住用户的标签位置。所以当用户离开屏幕时我的按钮继续工作,returns 之后。

tabchange 事件应该是为此使用的事件,但我无法触发它。

查看:

Ext.define('MyApp1.view.Home',
{
    extend: 'Ext.form.Panel',

    requires:
    [
        'Ext.tab.Panel'
    ],

    xtype: 'home',

    config:
    {
        itemId: 'home',
        layout: 'fit',

        items:
        {
            xtype: 'tabpanel',
            tabBarPosition: 'top',
            height: 500,
            renderTo: document.body,
            listeners:
            {
                beforetabchange: function (tabs, newTab, oldTab)
                {
                    console.log('tab is going to change');
                },
                tabchange: function ()
                {
                    console.log('recorded tab change from listener');
                },
                change: function ()
                {
                    console.log('change of tab from listener');
                }
            },

            items:
            [
                {
                    title: 'one'
                },
                {
                    title: 'two'
                }
            ]
        }
    }
});

控制器:

Ext.define('MyApp1.controller.HomeController',
{
    extend: 'Ext.app.Controller',

    requires:
    [
        'MyApp1.view.Main'
    ],

    config:
    {
        refs:
        {
            home: 'home'
        },
        control:
        {
            home:
            {
                beforetabchange: 'onTabChange',
                tabchange: 'onTabChange',
                change: 'onTabChange'
            }
        }
    },

    init: function()
    {
        console.log('HomeController initialized');
    },

    onTabChange: function ()
    {
        console.log('active tab changed');
    }
});

所以我在日志中看到了初始化文本,但是当我单击选项卡按钮时没有任何选项卡更改事件。

原来我在看 ExtJs 5 文档,而不是 Sencha 2.4.1 文档... 只有 'activeitemchange' 事件。

首先,您似乎只能在 tabPanel

tabBar 上实现这些侦听器

查看了源代码,虽然它似乎永远不会被解雇,即使它被记录在案。 http://docs-origin.sencha.com/touch/2.4/2.4.1-apidocs/source/Bar3.html#Ext-tab-Bar-event-tabchange

我可以建议的是,正如您指出的挂钩到面板上的 activeitemchange 事件或 tabbaractivetabchange(奇怪的是触发了两次)事件作为activeitemchange 似乎也没有按预期工作。

https://fiddle.sencha.com/#fiddle/g44