有几种方法可以做到这一点。对于DrakeES提到的焦点事件,它已经在那里。
对于不是的事件,例如,可以将事件从字段(如在基本字段类中)冒泡到表单。在表单中,您可以听到该事件并在处理程序中查看哪个字段确实将事件向上冒泡。
下面是一些非测试代码:
Ext.create('Ext.form.Panel', {
fullscreen: true,
items: [
{
xtype: 'fieldset',
title: 'Enter your name',
items: [
{
xtype: 'textfield',
**bubbleEvents: 'TheEvent',**
label: 'First Name',
name: 'firstName'
},
{
xtype: 'textfield',
**bubbleEvents: 'TheEvent',**
label: 'Last Name',
name: 'lastName'
}
]
}
],
listeners: {
/*
* TheEvent(this, e, eOpts)
*
* this : Ext.field.Field
* e : Event - The tap event
* eOpts : Object - The options object passed to Ext.util.Observable.addListener.
*/
TheEvent: function (field, event, opt) {
/*
* fireEvent(eventName, args) : Boolean
*
* eventName : String - The name of the event to fire.
* args : Object... - Variable number of parameters are passed to handlers.
*/
this.fireEvent('formfieldTheEvent', field, event, opt);
}
}
});
从那里,你可以从你的控制器或任何内听“formfieldTheEvent”,并检查该字段的名称或ID动作触发事件,例如。
您还可以通过绑定事件域中的事件来实现此目的。使用正确的选择器,您可以选择表单上的所有字段并绑定您喜欢的事件。
Ext.define('CustomController', {
extend: 'Ext.app.Controller',
init: function() {
this.listen({
controller: {},
component: {
'textfield': {
TheEvent: function(field, event, eOpts) {
....
}
}
},
direct: {},
global: {},
store: {}
});
}
})