0
我使用ExtJS的4.1和試圖做事件委派這在我的情況是一個模糊事件附加到我的表格的所有文本字段和它不工作,我沒有得到任何錯誤不工作在螢火蟲也一樣,我不知道我在安裝時走錯了,是我在哪裏把代碼中的錯誤的地方,也是我注意到,按照以下鏈接的文檔:ExtJS的4.1事件代表團
http://docs.sencha.com/ext-js/4-1/#!/api/Ext.form.Panel-method-on
的選項代表屬性對象不再存在。下面是我的代碼:
Ext.onReady(function() {
var loadForm = function() {
Ext.getCmp('TestForm').getForm().setValues({ name: 'some text', email: 'first', dob: '12/12/2009' });
}
Ext.define('userForm', {
extend: 'Ext.form.Panel'
, alias: 'widget.userform'
, frame: true
, initComponent: function() {
Ext.apply(this, {
title: 'User Form'
, height: 350
, items: [{
xtype: 'textfield'
, fieldLabel: 'Name'
, name: 'name'
, id: 'nameId'
, enableKeyEvents: true
}, {
xtype: 'textfield'
, fieldLabel: 'Email'
, name: 'email'
, id: 'emailId'
}, {
xtype: 'datefield',
fieldLabel: 'DOB',
id: 'dob',
name: 'dob',
format: 'Y-m-d'
}, {
xtype: 'textfield',
fieldLabel: 'Age',
id: 'age',
name: 'age'
}, {
xtype: 'textfield',
fieldLabel: 'Guardian',
id: 'guardian',
name: 'guardian'
}]
});
this.callParent(arguments);
} //eoinitComponent
});
var userForm = Ext.create('userForm', {
renderTo: 'loadPanel',
id: 'TestForm',
listeners: {
afterrender: function (formCmp, eOpts) {
loadForm();
},
render: function (formCmp, eOpts) {
Ext.getCmp("TestForm").on(
'blur',
function (e, t) {
// handle blur
console.info(t.id);
},
this,
{
// filter the target element to be a descendant with the class '.x-form-field'
delegate: '.x-form-field'
}
);
}
}
});
});
我不知道正確的答案是什麼,但我不認爲這一個有資格作爲使用「事件代理」,因爲它是連接監聽器爲每個字段。除非我錯了,否則事件代表團會將一個監聽者附加到一個元素上,然後處理其後代中的多個事件。 – Mark
事件發生代表團的對象(實例)級不是類(定義),所以它無關的後裔。代表團意味着實例Y將代替實例X處理通知。 – Izhaki
我是在說DOM的後代,而不是面向對象的繼承。 – Mark