2011-07-23 29 views
2

你能告訴如何將新方法添加到內線核心:如何向Ext Core添加新方法?

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

它不工作:

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

回答

2

(假設你正在使用的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,或者提供您自己的自定義功能以獲取元素。

乾杯!

+0

添加ExtJS 4的新方法有什麼不同嗎? – Algorithm

+0

應該工作。他們有'Ext.override'並且不被棄用。 –

+0

更多謝謝你! – Algorithm