我知道如何捕捉"常规"控制器中的事件,如侦听器中定义的事件,但我不知道如何捕获itemclick事件,这有点不同。如果我没有使用控制器,我会这样做:
$scope.customer = Customer.get({id: $stateParams.id}, function (){
console.log($scope.customer) // Object {id: 1, name: 'John Doe', ...}
$scope.customer.$update()
.then(function () {
console.log($scope.customer) // Object { status: true, $promise: Object, $resolved: true }
})
});
但是如何在控制器中捕获此事件:
xtype: 'combobox',
...,
itemId: 'some_id',
listConfig: {
listeners:{
'itemclick':{
fn: function(view, node) {
... do something
}
}
}
}
我试过了:
...
init:function(){
this.control({
... how ???
它不起作用。所以,我想,这个事件有一些特别之处。
答案 0 :(得分:2)
Ext.form.field.ComboBox是Ext.form.field.Picker的扩展名,其picker为Ext.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
}
});