0

当我想对用户在网格上选择一行做出反应时,我使用这个:

var grid = new Ext.grid.GridPanel({
    region: 'center',
    ...
});
grid.getSelectionModel().on('rowselect', function(sm, index, rec){
    changeMenuItemInfoArea(menuItemApplication, 'you are on row with index ' + index)
});   

如何将相同的功能附加到选项卡?像这样的东西:

var modules_info_panel = new Ext.TabPanel({
    activeTab: 0,
    region: 'center',
    defaults:{autoScroll:true},
    listeners: {
        'tabclick': function(tabpanel, index) {
            changeMenuItemInfoArea(menuItemModules,'you clicked the tab with index ' + index);
        }
    },
    items:[{
            title: 'Section 1',
            html: 'test'
        },{
            title: 'Section 2',
            html: 'test'
        },{
            title: 'Section 3',
            html: 'test'
        }]
});
modules_info_panel.getSelectionModel().on('tabselect', function(sm, index, rec){
    changeMenuItemInfoArea(menuItemModules, 'you are on tab with index ' + index)
});

附录

谢谢@timdev,这行得通,这就是我识别它是哪个选项卡的方法(简单地说id,我无法获取选项卡的索引,因为我可以获取网格中的行索引):

var modules_info_panel = new Ext.TabPanel({
    activeTab: 0,
    region: 'center',
    defaults:{autoScroll:true},
    items:[{
            id: 'section1',
            title: 'Section 1',
            html: 'test'
        },{
            id: 'section2',
            title: 'Section 2',
            html: 'test'
        },{
            id: 'section3',
            title: 'Section 3',
            html: 'test'
        }]
});

modules_info_panel.items.each(function(tab){
    tab.on('activate',function(panel){
        changeMenuItemInfoArea(menuItemModules, 'you opened the "' + panel.id + '" tab');
    });
});

replaceComponentContent(regionContent, modules_info_panel);

hideComponent(regionHelp);
4

2 回答 2

1

你很近。

选项卡面板中的各个面板在activate激活时会触发一个事件。

您在配置时通过listeners配置键将处理程序附加到 TabPanel 中的每个项目。

或者你可以在你去的时候遍历所有附加你的监听器的选项卡,比如:

modules_info_panel.items.each(function(tab){
    tab.on('activate',function(panel){ ... });
}
于 2010-12-02T18:24:22.053 回答
1

您还可以使用 TabPanel 的 'beforetabchange' 事件:

tabs.on('beforetabchange', function(tabPanel, newItem, currentItem) { ... }, this);
于 2010-12-03T17:45:31.697 回答