extjs 6.5.2 modern - beforeremove、beforeclose、close not firing

extjs 6.5.2 modern - beforeremove, beforeclose, close not firing

我注意到 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');
        }
    }
});
}
});

只需将示例添加到 Modern toolkit 中的 sencha fiddle,然后打开浏览器的开发人员工具。

此外,如果 panel 不在 tabpanel 内,beforecloseclose 可以正常发射。

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