有幾種方法可以做到這一點。對於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: {}
});
}
})