我正在使用一个具有另一个子面板(比如childPanel)的面板(比如parentPanel)。如何从childPanel触发将由parentPanel捕获的自定义事件?
答案 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
是您要为每个侦听器调用的参数。