点击TabPanel时如何调用控制器上的函数? Sencha Touch 2

时间:2012-05-09 15:59:15

标签: 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: [
            {
                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 :(
    }
});

3 个答案:

答案 0 :(得分:2)

您应该在tabpanel上听取'activeitemchange',而不是在标签上收听'tap'事件。 见http://docs.sencha.com/touch/2-0/#!/api/Ext.tab.Panel-event-activeitemchange

答案 1 :(得分:1)

在监听/查询Sencha“ext-tab-2”生成的html-id时有效。

for Instance:

config: {
    control: {
        "ptabpanel #ext-tab-2": {
            tap: 'onButtonTap'
        }
    }
},

但现在的问题是如何更改Sencha Touch 2生成的“ext-tab-2”名称

@Borck:谢谢!

答案 2 :(得分:0)

您可以通过将此配置添加到选项卡面板来为标签栏按钮指定ID:

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