Extjs 4.1 - 在组合中查找事件监听表单重置

时间:2013-08-08 01:38:21

标签: extjs extjs4.1

我有一个包含类似

的组合的窗口
       items: {
            xtype: 'form',
            items: {
                xtype: 'combo',
                id: 'combo',
                queryMode: 'local',                
                displayField: 'name',
                valueField: 'id',
                store: Ext.create('Ext.data.Store', {
                    fields: ['id', 'name'],
                    data: [
                      {'id': '1', 'name': 'John Smith'},
                      {'id': '2', 'name': 'Albert Einstein'}
                    ]
                }),
                listeners: {
                    change: function( combo, newValue, oldValue, eOpts ) {
                        alert('reset fire 1');
                    },
                    dirtychange:function( combo, isDirty, eOpts ) {
                        alert('reset fire 2');
                    },
                   select: function( combo, records, eOpts ) {
                        alert('reset fire 3');
                   }
                }
            }
        }

我在组合中寻找一个事件当我调用将要触发的重置表单时。那可能吗? 这是我的代码 http://jsfiddle.net/KVrZ7/

1 个答案:

答案 0 :(得分:1)

"变更"事件也不错:

listeners: {
   change: function(field, val) {
       if(!val) {
           alert('reset');
       }
   }
}

请参阅:http://jsfiddle.net/KVrZ7/2/

另一种解决方案 - 你可以解雇"重置"表格(或字段)中的事件。在你的按钮中:

handler: function() {
    window.down('form').getForm().reset();
    window.down('form').fireEvent('reset'); //<--------- firing event
}

在你的组合中:

listeners: {
    afterrender: function(f) {
        f.up('form').on('reset', function() {//<----- getting a form and attach handler
            alert('reset');
        });
    }
}

请参阅:http://jsfiddle.net/KVrZ7/4/