如何向Ext Core添加新方法?

时间:2011-07-23 15:54:34

标签: javascript extjs

请告诉我们如何向Ext Core添加新方法:

Ext.get('id').myMethod();

不起作用:

Ext.extend(Ext.Element, {
    myMethod: function() {
        this.on('click', function() {
             alert(this);
        });
    }
});

1 个答案:

答案 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,或者提供您自己的自定义函数来获取元素。

干杯!