как вызвать функцию на контроллере при нажатии на TabPanel? Сенча Touch 2

У меня есть контроллер и TabPanel в Sencha Touch 2, я хочу вызвать функцию, когда элемент нажимается на 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'
        }
    }
});

контроллер.js

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

person lito    schedule 09.05.2012    source источник


Ответы (3)


Вместо того, чтобы слушать события «tap» на вкладках, вы должны слушать «activeitemchange» на самой панели вкладок. См. http://docs.sencha.com/touch/2-0/#!/api/Ext.tab.Panel-event-activeitemchange

person borck    schedule 09.05.2012
comment
Спасибо!. Тогда почему я могу сделать это со сгенерированным идентификатором сенчи: #ext-tab-2? - person lito; 09.05.2012
comment
Я хочу послушать, чтобы не только изменить действие, но и снова нажать на ту же вкладку. Что я могу сделать? @борк - person Ismail Yavuz; 15.06.2015

Он работает при прослушивании/запросе html-идентификатора, сгенерированного Sencha «ext-tab-2».

например:

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

Но теперь проблема в том, как изменить имя «ext-tab-2», сгенерированное Sencha Touch 2.

@Borck: спасибо!.

person lito    schedule 09.05.2012
comment
Спасибо, это также решило мою проблему. Это поможет иметь событие касания, даже если выбрана одна вкладка. - person amrit_neo; 26.11.2012

Вы можете назначить идентификаторы кнопкам на панели вкладок, добавив на панель вкладок следующую конфигурацию:

tabBar: {
  id: 'myTabBar',
  items:[
    {
      id: 'myFirstTab'
    },
    {
      id: 'mySecondTab'
    },
    ...
   ]
 }
person Adam Klein    schedule 16.05.2012
comment
myFirstTab и mySecondTab будут идентификаторами панелей, а не кнопок. При этом вы можете получить отображение или скрыть события в контроллере. - person prossel; 25.04.2014