0
我正在使用具有另一个子面板(称为childPanel)的面板(称为parentPanel)。我怎么能从childPanel触发一个自定义事件,它将被parentPanel捕获?extjs - 如何为子组件的自定义事件创建侦听器
我正在使用具有另一个子面板(称为childPanel)的面板(称为parentPanel)。我怎么能从childPanel触发一个自定义事件,它将被parentPanel捕获?extjs - 如何为子组件的自定义事件创建侦听器
像这样:
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
}
});
这样做只是单个实例相同的方式工作预计将需要改用静态template method的afterrender
事件。
注: 我不符合您的需求,您需要发布更详细的问题(附带示例代码)以获得更详细的答案。
编辑:
添加自定义事件到一个新的组件:通过调用fireEvent('customeventname', args)
其中args
是
initComponent: function() {
// ...
me.addEvents('customeventname');
// ...
}
您现在可以注册这个组件的实例监听这个事件和火灾事件你想调用每个听众的参数。
- 这对我来说很好。只是没有使用组件预定义事件(在您的示例中为“更改”)。我想在文本字段中激发一个自定义事件。请更新与孩子fireEvent() – Vivek
@VVK的例子嗯,我不知道如果我得到你的权利...我添加了一些更多的信息到我的文章。如果这仍然不能帮助你,你需要提供更多信息。您是否想为新组件启动自定义事件?自己以另一个组件的名义发起一个事件 - 如果是这样,这里的触发器是什么? – sra
- 谢谢。顺便说一句,我可以在面板中捕获customeventname而不添加监听器到文本字段(比如我有很多文本字段,我不想为每个字段找到并添加监听器)。 – Vivek