2016-01-16 31 views
2

我知道如何捕捉控制器中的「常規」事件,就像在監聽器中定義的那樣,但我不知道如何捕獲itemclick事件,這有點不同。如果我沒有使用控制器,我會做它像這樣:如何在控制器中捕獲組合框itemclick事件

xtype: 'combobox', 
..., 
itemId: 'some_id', 
listConfig: { 
    listeners:{ 
     'itemclick':{ 
       fn: function(view, node) { 

        ... do something 

       } 
     } 
    } 
} 

但我怎麼能捕捉到控制器此事件:

... 
init:function(){ 
    this.control({ 
     ... how ??? 

我嘗試這樣做:

this.control({ 
     '[itemId=some_id]':{ 
      itemclick: this.doSomething 
     }, 
     ... 

,它不起作用。所以,我想,這個事件有一些特殊之處。

回答

2

Ext.form.field.ComboBoxExt.form.field.Picker擴展及其pickerExt.view.BoundListView

createPicker: function() { 
    var me = this, 
     picker, 
     pickerCfg = Ext.apply({ 
      xtype: 'boundlist', 
      pickerField: me, 
      selModel: { 
       mode: me.multiSelect ? 'SIMPLE' : 'SINGLE' 
      }, 
      floating: true, 
      hidden: true, 
      store: me.store, 
      displayField: me.displayField, 
      focusOnToFront: false, 
      pageSize: me.pageSize, 
      tpl: me.tpl 
     }, me.listConfig, me.defaultListConfig); 

    picker = me.picker = Ext.widget(pickerCfg); 
    if (me.pageSize) { 
     picker.pagingToolbar.on('beforechange', me.onPageChange, me); 
    } 

    ... 
}, 

所以你可以嘗試像

this.control({ 
    'combo[name=myCombo] boundlist': { 
     itemclick: this.myHandler 
    } 
}); 
相關問題