我注意到tabpanel
beforeremove
和panel
' s beforeclose
和close
没有被解雇。另一方面,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 fiddle,然后打开浏览器的开发者工具。
此外,如果beforeclose
不在close
内,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的回答,因为它解决了我的问题。但它是一个框架错误,它应该在下次更新时修复。
答案 0 :(得分:0)
在这里演示:https://fiddle.sencha.com/#view/editor&fiddle/29dj
TL; DR听取“停用”和“删除”事件。
用户单击发生在选项卡栏(Ext.tab.Bar)而不是面板上,并且该栏是Ext.tab.Panel(扩展Ext.Container)的一部分。 因此,调用关闭选项卡的方法是Ext.tab.Panel的“onItemRemove”,而不是“关闭”Ext.Panel。 这就是你的听众无法工作的原因。
使用演示小提琴,您可以看到Ext.Panel触发的所有事件,并使用这些事件来执行您需要的操作。
修改强>
要在关闭之前显示确认消息,请使用小提琴:https://fiddle.sencha.com/#view/editor&fiddle/29hl