如何在控制器中捕获组合框项目单击事件

时间:2016-01-16 18:51:18

标签: javascript extjs

我知道如何捕捉"常规"控制器中的事件,如侦听器中定义的事件,但我不知道如何捕获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 ???

它不起作用。所以,我想,这个事件有一些特别之处。

1 个答案:

答案 0 :(得分: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
    }
});