您能否告诉我如何向Ext Core添加新方法:

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


它不起作用:

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

最佳答案

(假设您正在使用ExtJS 3)

不,那不是正确的方法。需要扩展类并创建自己的类时,请使用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,或提供您自己的自定义函数来获取元素。

干杯!

09-20 06:19