2012-02-09 2 views
0

У меня есть проблема со следующим блоком кода:ExtJS и this.control запрос

run: function(e, row){ 
    var me = this; 

    var container = Ext.getCmp('centercontainer'); 

    try { 
     container.removeAll(); 
    } catch(e) { } 

    // This block is called from another file, I just put it here to show you. 
    me.panels = [{ 
     xtype: 'tabpanel', 
     id: 'containertabpanel', 
     items: [{ 
      itemId: 'package', 
      title: me.PackageTitle 
     },{ 
      itemId: 'excursion', 
      title: me.ExcursionTitle 
     }] 
    }]; 

    // Reset 
    container.setTitle(me.EditDestinationTitle + row.data.name); 
    container.add(me.panels); 
    me.tabs = container.getComponent('containertabpanel'); 

    // console.log(Ext.ComponentQuery.query('#containertabpanel > #package')) 

    me.control({ 
     // Work with 
     // 'tab': { 

     // Doesn't work 
     'containertabpanel > package': { 
      mouseover: me.doPackage 
     } 
    }) 

}, 

Каждый знает, как я могу получить, чтобы поймать событие щелчка «пакета» пункта tabpanel компонента? Я видел, когда я использую только «вкладку» в этом запросе this.control, это работает, но я не могу получить только компонент вкладки «пакет».

Заранее спасибо.

ответ

0

В вашем определении вашего tabpanel вы можете указать -

listeners:{ 
    click:{ 
     fn: function(){ 
      //click handling code goes here 
     } 
    } 
} 
0

Если я правильно понял это код контроллера и вы пытаетесь поймать пункт, нажмите на панели, которая является одним из многих в tabpanel

что вы можете сделать, это определить вашу панель любого имущества, которое является уникальным для него с помощью компонента синтаксиса запроса, как это: button[myprop=blah]
этого синтаксиса будет соответствовать любой кнопке на странице со следующей конфигурацией:

{ 
    xtype:'button' 
    myprop:'blah' 
} 

В вашем случае вы можете попробовать tab[itemId=package]

То, что вы также должны быть осторожны, о том, контроллер может слушать только для событий, которые выпущенными компонентами. Убедитесь, что событие, которое вы слушаете, запускается (проверьте документы). При необходимости вы всегда можете запускать пользовательские события.

0

Вы должны сделать это

me.control({ 
    // Work with 
    // 'tab': { 

    // Doesn't work 
    'containertabpanel > #package': { 
     mouseover: me.doPackage 
    } 
}) 
Смежные вопросы