请告诉我们如何向Ext Core添加新方法:
Ext.get('id').myMethod();
不起作用:
Ext.extend(Ext.Element, {
myMethod: function() {
this.on('click', function() {
alert(this);
});
}
});
答案 0 :(得分:2)
(假设您使用的是ExtJS 3)
不,那不是正确的方法。当我们需要扩展一个Class并创建我们自己的类时,我们使用extend
。
然后,如果您想添加其他功能或覆盖某些核心方法,请使用Ext.override
。此操作是永久性和破坏性的,因为您可以覆盖任何已定义的方法。当我们想要应用个人修补程序或全局更改时(例如覆盖override
,以便提供全局,可用和跨Ext.form.Field
功能),我们会使用fields
。
对于您的情况,您似乎希望将此方法应用于从Ext.get
捕获的所有元素。您只需要覆盖Ext.Element
。
Ext.override(Ext.Element, {
myMethod: function() {
this.on('click', function() {
alert(this);
});
}
});
这里给出了一个工作示例:jsfiddle。
请注意Ext.get
在成功通话时为您Ext.Element
。如果您想创建自定义的Ext.Element
,请务必修改Ext.get
,以便它返回您自己的自定义Ext.Element
,或者提供您自己的自定义函数来获取元素。
干杯!