Javascript 如何使用事件--选项卡激活容器时会触发什么事件?(extjs 6.5)

Javascript 如何使用事件--选项卡激活容器时会触发什么事件?(extjs 6.5),javascript,events,extjs,extjs6.5,Javascript,Events,Extjs,Extjs6.5,在使用sencha extjs 6.5框架时,我遇到了事件问题。。我想做的是创建一个存储,将加载延迟到激活选项卡之后。(并在每次用户返回该选项卡时重新加载) 现在手动加载并不难。然而,我似乎找不到激活选项卡时发生的触发器 选项卡由主视图定义(在app.js中显示为main): 第二个选项卡是我感兴趣的选项卡,它具有以下定义: Ext.define('BinkPortalFrontend.view.main.OrderContainer', { //extend: 'BinkPortalF

在使用sencha extjs 6.5框架时,我遇到了事件问题。。我想做的是创建一个存储,将加载延迟到激活选项卡之后。(并在每次用户返回该选项卡时重新加载)

现在手动加载并不难。然而,我似乎找不到激活选项卡时发生的触发器

选项卡由主视图定义(在app.js中显示为main):

第二个选项卡是我感兴趣的选项卡,它具有以下定义:

Ext.define('BinkPortalFrontend.view.main.OrderContainer', {
    //extend: 'BinkPortalFrontend.view.main.BaseContainer',
    xtype: 'ordercontainer',
    controller: 'order',
    extend: 'Ext.Container',
    layout: 'vbox',

    listeners: {
        activate: function(me, oOpts) {
            console.log('activating');
        },

        enable: function(me, oOpts) {
            console.log('enabling');
        },

        focus: function(me, oOpts) {
            console.log('focus');
        },
        focusenter: function(me, oOpts) {
            console.log('focus');
        },
        focusleave: function(me, oOpts) {
            console.log('focus');
        },
        show: function(me, oOpts) {
            console.log('show');
        },
    }
});

大家很快就会看到,我尝试过测试各种事件。但是,似乎只有激活事件在页面加载时触发。我做错了什么?我还没有完全看到许多事件中哪一个是有用的(请参见)

您可能希望在选项卡面板上收听事件,然后在
新卡上触发您自己的事件(或者在
旧卡上触发另一个事件)。

我意识到这是一个已经有答案的非常老的问题。但我希望未来的人们(像我一样)能发现这一点,这里是另一个视角

当选项卡被激活时,“激活”事件将在选项卡本身上触发。 见文件:

它在您的示例中不起作用,很可能是因为您(不必要地)将“OrderContainer”嵌套在另一个名为“Home”的面板中。Home在用户每次打开选项卡时都会正确接收“激活”事件,但其子项(如正在侦听的OrderContainer)不会

因此,我的建议是:

  • 重新安排您的逻辑,以便“主”组件是正在侦听“激活”事件并执行任何加载操作的组件
  • 完全移除“主”面板,直接使用orderContainer即可
  • 如果只有“主页”提供标题和图标,则可以通过tabConfig属性将其添加到OrderContainer:

    items: [
      {
         xtype: 'ordercontainer'
         tabConfig: {
            title: 'Home',
            iconCls: 'x-fa fa-home'
         }
      }
    ]
    

    这确实有效——尽管这是一种迂回的方式;因此,如果存在一个正式的事件,我想知道它。@paul23我没有找到一个,尽管我仔细阅读了ExtJS代码。
    items: [
      {
         xtype: 'ordercontainer'
         tabConfig: {
            title: 'Home',
            iconCls: 'x-fa fa-home'
         }
      }
    ]