将单击事件绑定到Ext JS中的Tab

时间:2011-05-16 17:33:33

标签: javascript extjs tabs extjs4 tabpanel

阿罗哈,SO。

我正忙着开发一个几乎所有ExtJS用于前端工作的项目。我正在使用4.0.0版,假设这是必须要知道的。我有以下代码:

panel = Ext.create("Ext.panel.Panel",{
        //initializing stuffs
})

其中一些

 tabs = Ext.create("Ext.tab.Panel", {
        //initialize config
        items: [
               //the panels
        ]
  })

现在我的大问题是,我需要能够将事件绑定到实际的标签。我知道能够将事件绑定到选项卡面板和选项卡栏,但我需要实际将click事件绑定到面板中的一个选项卡。我尝试过这样的方法:

panel = Ext.create("Ext.panel.Panel", {
        //initializing stuffs
        listeners: {
                 click: {
                        fn: function() {
                            console.log("in click listener for panel")
                        }
                  }
         }
 })

然而,根据我的判断,问题是绑定到实际面板本身,而不是标签栏中的选项卡。有趣的是,就功能而言,它实际上甚至没有绑定到实际面板,因为我从未看到控制台日志信息。

在任何情况下,你们中的任何人都会知道如何将事件直接绑定到选项卡吗?或者甚至如何直接访问标签?我一直在筛选ExtJS API文档,但我仍然找不到任何东西,所以,如果有人在这里可以提供帮助,那就太棒了! :d

为了说清楚,我并没有试图勾选标签。我正试图勾选点击标签的实际点击事件,因为我将检查是否点击鼠标中键,这样我就可以关闭标签。

2 个答案:

答案 0 :(得分:2)

我将它放在ExtJS 3中选项卡面板内的选项卡上。类似的东西应该在4中工作。

listeners: {
    activate: function() {
        var me = this;
        Ext.fly(this.ownerCt.getTabEl(this)).on({
            click: function() {
                me.loadProducts();
            }
        });
    },
    single: true
},

loadProducts: function() {
    this.load({
    url: 'products.jsp',
    params: {
        caseID: window.caseID
    },
    scripts: true
});

答案 1 :(得分:1)

您可以向TabPanel本身添加听取beforetabchange和/或tabchange

的听众