Javascript 带有可关闭选项卡的ExtJs Tabpanel关闭事件

Javascript 带有可关闭选项卡的ExtJs Tabpanel关闭事件,javascript,events,extjs,tabpanel,Javascript,Events,Extjs,Tabpanel,我设置的侦听器似乎没有触发。这是我的密码: new Ext.TabPanel({ id:'content-tab-panel', renderTo: 'trx_tabs_ext', activeTab: 0, minTabWidth: 150, tabWidth:180, enableTabScroll: true, autoScroll: true, resize

我设置的侦听器似乎没有触发。这是我的密码:

  new Ext.TabPanel({
        id:'content-tab-panel',
        renderTo: 'trx_tabs_ext',
        activeTab: 0,
        minTabWidth: 150,
        tabWidth:180,
        enableTabScroll: true,
        autoScroll: true,
        resizeTabs:true,
        defaults: {
            autoScroll:true
        },
        items: [{
            title: 'No Active Chat',
            id: 'no_chat',
            closable: true,
            autoScroll: false,
            margins: '0 0 0 0',
            html: "<div id=\"chat_window_viewer\"  style=\"width:900px;height:440px;text-align:left; \">&nbsp;</div>"
        }],
        width: '100%',
        height: '400px',
        listeners: {
            tabchange: function(tabPanel, newTab, oldTab, index)
            {
                console.log('change tab');
            },
            beforeadd : function (tabpane, component, index) {
                console.log('Adding new tab');
            },
            beforeclose: function(element) {
                console.log('closing');
            }
        }
    });
new Ext.TabPanel({
id:'content-tab-panel',
renderTo:'trx_tabs_ext',
活动选项卡:0,
最小宽度:150,
标签宽度:180,
enableTabScroll:true,
autoScroll:是的,
是的,
默认值:{
自动滚动:对
},
项目:[{
标题:“无活动聊天”,
id:'没有聊天',
closable:是的,
自动滚动:错误,
边距:“0”,
html:“
}],
宽度:“100%”,
高度:“400px”,
听众:{
tabchange:函数(tabPanel、newTab、oldTab、index)
{
console.log(“更改选项卡”);
},
beforeadd:函数(选项卡窗格、组件、索引){
log(“添加新选项卡”);
},
关闭前:函数(元素){
console.log(“关闭”);
}
}
});
beforeadd选项卡将触发更改,并通过在控制台写入日志来执行此操作。但是,beforeclose没有

我还试着把它放在Tabpanel的项目中,但也不起作用


在选项卡面板中添加关闭事件的正确方法是什么?

若要获取项目关闭事件,请将侦听器添加到该项目


在这里拨弄:

您正在使用哪个版本的库?请注意,beforclose事件自2.3.0起可用

当我收听项目的事件时,它对我有效,而不是整个面板

new Ext.TabPanel({
        id:'content-tab-panel',
        renderTo: 'trx_tabs_ext',
        activeTab: 0,
        minTabWidth: 150,
        tabWidth:180,
        enableTabScroll: true,
        autoScroll: true,
        resizeTabs:true,
        defaults: {
            autoScroll:true
        },
        items: [{
            title: 'No Active Chat',
            id: 'no_chat',
            closable: true,
            autoScroll: false,
            margins: '0 0 0 0',
            html: "<div id=\"chat_window_viewer\"  style=\"width:900px;height:440px;text-align:left; \">&nbsp;</div>",
            listeners:{
                'beforeclose': function(){console.log('closed')}
            }
        }],
        width: '100%',
        height: '400px',
        listeners: {
            tabchange: function(tabPanel, newTab, oldTab, index)
            {
                console.log('change tab');
            },
            beforeadd : function (tabpane, component, index) {
                console.log('Adding new tab');
            }
        }
    });
new Ext.TabPanel({
id:'content-tab-panel',
renderTo:'trx_tabs_ext',
活动选项卡:0,
最小宽度:150,
标签宽度:180,
enableTabScroll:true,
autoScroll:是的,
是的,
默认值:{
自动滚动:对
},
项目:[{
标题:“无活动聊天”,
id:'没有聊天',
closable:是的,
自动滚动:错误,
边距:“0”,
html:“”,
听众:{
“beforeclose”:函数(){console.log('closed')}
}
}],
宽度:“100%”,
高度:“400px”,
听众:{
tabchange:函数(tabPanel、newTab、oldTab、index)
{
console.log(“更改选项卡”);
},
beforeadd:函数(选项卡窗格、组件、索引){
log(“添加新选项卡”);
}
}
});

由于Extjs 2.3.0
选项卡面板
在关闭前有一个
事件:

删除之前(此、组件、EOPT)

在从容器中删除任何
Ext.Component
之前激发。处理程序可以返回false以取消 删除该文件

自:2.3.0起提供

参数

  • 此:
    Ext.container.container
  • 组件:
    Ext.component
    正在移除的组件
  • eOpts:
    对象
    传递的选项对象 到
    Ext.util.Observable.addListener
因此,只需在
选项卡面板中添加一个侦听器即可:

listeners: {

    beforeremove: function (panel, item, eOpts) {
        console.log(item); // the tab to be removed
    }
 . . . . 
}

它的extjs2.2。是的,它是恐龙。我一直想升级,但没有时间。您在项目中没有侦听器的参数?它有效吗?恐怕在2.3.0之后的关闭事件之前可用。ExtJS是javascript框架,因此它遵循javascript规则。如果您不需要参数,请不要发送。mario died music就是这样,该升级了。
tabpanel
组件在关闭前没有
事件,除非它是
closable:true
。您可能希望在删除之前尝试
。见下面我的答案。