extjs - 如何为子组件的自定义事件创建侦听器

时间:2014-07-02 07:43:58

标签: extjs event-handling listener

我正在使用一个具有另一个子面板(比如childPanel)的面板(比如parentPanel)。如何从childPanel触发将由parentPanel捕获的自定义事件?

1 个答案:

答案 0 :(得分:2)

像这样:

Ext.define('Ext.ux.form.Panel', {
    extend: 'Ext.form.Panel',
    title: 'Simple Form',
    bodyPadding: 5,
    width: 350,

    layout: 'anchor',
    defaults: {
        anchor: '100%'
    },

    defaultType: 'textfield',
    initComponent: function() {
        var me = this;
        me.items = [{
            fieldLabel: 'First Name',
            name: 'first',
            allowBlank: false
        }];
        me.callParent(arguments);
    },

    afterRender: function() {
        var me = this;
        me.callParent(arguments);
        // in case of a form you can also use the findField() method
        // I used down() because it will work with all sort of containers
        me.down('textfield[name=first]').on('change',me.onFirstnameChange,me);
    },

    onFirstnameChange: function(field) {
        // custom handler
    }
});

仅在单个实例上执行此操作的方式相同,因为您需要使用afterrender事件而不是静态template method

注意: 我不能满足您的需求,您需要发布更详细的问题(带示例代码)以获得更详细的答案。

编辑:

将自定义事件添加到新组件:

initComponent: function() {
    // ...
    me.addEvents('customeventname');
    // ... 
}

现在,您可以在此组件的实例上注册此事件的侦听器,并通过调用fireEvent('customeventname', args)来激活事件,其中args是您要为每个侦听器调用的参数。