0

再次阿罗哈,所以。

我正忙于一个项目,该项目几乎都是用于前端工作的 ExtJS。我使用的是 4.0.0 版,假设这是有必要知道的。我有一些代码如下:

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

当时有几个

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

现在我的大问题是,我需要能够将事件绑定到实际的选项卡。我知道能够将事件绑定到选项卡面板和选项卡栏,但我需要将点击事件实际绑定到面板中的选项卡之一。我尝试了一些类似的东西:

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

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

无论如何,你们中的任何人会碰巧知道如何将事件直接绑定到选项卡吗?甚至如何直接访问选项卡?我一直在筛选 ExtJS API 文档,但我仍然找不到任何东西,所以,如果有人能提供帮助,那就太棒了!:D

只是为了清楚起见,我并不想尝试更改选项卡。我正在尝试挂钩单击选项卡的实际单击事件,因为我将检查它是否是被单击的鼠标中键,因此如果是,我可以关闭选项卡。

4

2 回答 2

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
});
于 2011-05-17T19:21:15.543 回答
1

您可以向TabPanel本身添加监听器来监听beforetabchange和/或tabchange

于 2011-05-16T22:06:17.257 回答