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