gpt4 book ai didi

javascript - extjs 6.5.2 modern - beforeremove、beforeclose、close not firing

转载 作者:行者123 更新时间:2023-12-03 18:35:06 24 4
gpt4 key购买 nike

我注意到 tabpanelbeforeremovepanelbeforecloseclose没有开火。另一方面destroy事件进行得很好。是否有任何解决方法或具有相同结果的不同事件?

我在下面的例子中重现了我的观察结果。

Ext.application({
name : 'Fiddle',

launch : function() {
Ext.create('Ext.TabPanel', {
fullscreen: true,
tabBarPosition: 'bottom',

items: [
{
xtype: 'panel',
title: 'Home',
iconCls: 'home',
html: 'Home Screen',
closable: true,
listeners: {
beforeclose: function () {
console.log('beforeclose');
},
close: function () {
console.log('close');
},
destroy: function () {
console.log('destroy');
}
}
},
{
title: 'Contact',
iconCls: 'user',
html: 'Contact Screen'
}
],
listeners: {
beforeremove: function () {
console.log('beforeremove');
}
}
});
}
});

只需将示例添加到 sencha fiddleModern toolkit 中打开浏览器的开发者工具。

此外,beforecloseclose如果 panel 正在开火不在 tabpanel 内.

Ext.create({
xtype: 'panel',
title: 'Panel Title',
iconCls: 'x-fa fa-html5',
height: 400,
width: 400,
bodyPadding: 12,
html: 'Sample HTML text',
renderTo: Ext.getBody(),
listeners: {
beforeclose: function () {
console.log('beforeclose');
},
close: function () {
console.log('close');
}
}
}).close();

更新

-- 这是一个框架错误。所以我可能不得不等待更新。

-- 我接受了 Marco 的回答,因为它解决了我的问题。但这是一个框架错误,应该在下一次更新中修复。

最佳答案

此处演示:https://fiddle.sencha.com/#view/editor&fiddle/29dj

TL;DR 监听“deactivate”和“removed”事件。

用户点击发生在选项卡栏 (Ext.tab.Bar) 上,而不是在您的面板上,并且该栏是 Ext.tab.Panel(扩展 Ext.Container)的一部分。因此,调用关闭选项卡的方法是 Ext.tab.Panel 的“onItemRemove”,而不是 Ext.Panel 的“close”。这就是您的听众不起作用的原因。

使用演示 fiddle ,您可以看到您的 Ext.Panel 触发的所有事件,并使用这些事件来执行您需要的操作。

编辑

要在关闭前显示确认消息,请使用 fiddle :https://fiddle.sencha.com/#view/editor&fiddle/29hl

关于javascript - extjs 6.5.2 modern - beforeremove、beforeclose、close not firing,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47153823/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com