Sencha touch 2 点击TabPanel时如何调用控制器上的函数?森查触摸2

Sencha touch 2 点击TabPanel时如何调用控制器上的函数?森查触摸2,sencha-touch-2,listener,tabpanel,Sencha Touch 2,Listener,Tabpanel,我在Sencha Touch 2中有一个控制器和一个TabPanel,我想在TabPanel上点击一个元素时调用一个函数: TabPanel.js Ext.define('app.view.principalTabPanel', { extend: 'Ext.tab.Panel', alias: 'widget.ptabpanel', config: { ui: 'light', items: [ {

我在Sencha Touch 2中有一个控制器和一个TabPanel,我想在TabPanel上点击一个元素时调用一个函数:

TabPanel.js

Ext.define('app.view.principalTabPanel', {
    extend: 'Ext.tab.Panel',
    alias: 'widget.ptabpanel',
    config: {
        ui: 'light',
        items: [
            {
                xtype: 'container',
                itemId: 'idContnr',
                title: 'tap Me!',
                iconCls: 'bookmarks'
            }
        ],
        tabBar: {
            docked: 'bottom',
            ui: 'light'
        }
    }
});
controller.js

Ext.define('app.controller.mainController', {
    extend: 'Ext.app.Controller',
    config: {
        control: {
            "ptabpanel #idContnr": {
                tap: 'takePhoto'
            }
        }
    },
    takePhoto: function() {
        console.log('toma foto!'); // Not Working :(
    }
});

您不应该听选项卡上的“点击”事件,而应该听选项卡面板本身上的“activeitemchange”。
请参见

它在侦听/查询Sencha“ext-tab-2”生成的html id时起作用

例如:

config: {
    control: {
        "ptabpanel #ext-tab-2": {
            tap: 'onButtonTap'
        }
    }
},
但现在的问题是如何更改Sencha Touch 2生成的“ext-tab-2”名称


@博克:谢谢

通过将此配置添加到选项卡面板,可以为选项卡栏按钮分配ID:

tabBar: {
  id: 'myTabBar',
  items:[
    {
      id: 'myFirstTab'
    },
    {
      id: 'mySecondTab'
    },
    ...
   ]
 }

谢谢那么为什么我可以使用生成的sencha id:#ext-tab-2执行此操作呢?我不仅想听到“更改”操作,还想再次单击同一选项卡。我能做什么@这也解决了我的问题。即使选择了一个选项卡,这也有助于创建点击事件。myFirstTab和mySecondTab将是面板的ID,而不是按钮。这样,您就可以在控制器中显示或隐藏事件。