我想做一些初始化,當我使用Ext.create(「....」)。該對象很簡單,很小,我不想定義它,但是它需要一些來自mixin的方法(在創建組件之前調用)...我該怎麼做?是否有類似於initComponent的Ext.create方法?
回答
標準的實例覆蓋
通常情況下,我們會使用
Ext.override()
Ext.create()
後覆蓋適用於一個特定實例類(見docs):var myObj = Ext.create('Ext.some.Component', { ... }); Ext.override(myObj, { myMethod: function() { // Do something. this.callParent(arguments); // From Ext.some.Component class. // Do something else. } });
- 個
this.callParent(arguments)
工作正常只用於創建- 明確通過
Ext.override()
,或通過Ext.define()
- 明確通過
特例:首要initComponent
由於
initComponent
方法中被稱爲的Ext.create()
執行,我們必須在Ext.create
覆蓋它。爲了訪問原來的方法,我們必須使用一個變通訪問被覆蓋的方法:var myObj = Ext.create('Ext.some.Component', { initComponent: function() { // Do something. // Get a reference to the class. var myClass = Ext.getClass(this); // Apply the overridden method from the class' prototype. myClass.prototype.initComponent.apply(this, arguments); // Do something else. } });
這導致'stackoverflow'(諷刺:P)錯誤。 'myClass.prototype.initComponent.apply(this,arguments)'調用將遞歸調用同一個函數。 – 2012-08-30 06:28:29
它不應該是因爲原型和組件實例上的函數不一樣(請參閱http://jsfiddle.net/VrA4T/)。雖然進一步測試,但似乎這種技術不適用於構造函數方法。 – 2012-08-30 13:12:33
嗯..奇怪..在你的例子中工作。在我的情況下,它變得瘋狂。我想ppl應該嘗試一下,看看它是否適合他們的情況。 – 2012-08-30 19:53:59
這聽起來像你正在做的線沿線的東西:
Ext.create('Ext.panel.Panel', {
prop1: value1,
prop2: value2
});
如果是那樣的話,你應該能夠添加一個名爲initComponent屬性,它是一個函數,你想要做什麼。只記得打電話給原來的initComponent所以一切都得到正確構建:
Ext.create('Ext.panel.Panel', {
prop1: value1,
prop2: value2,
initComponent: function() {
this.doSomething();
Ext.panel.Panel.prototype.initComponent.apply(this, arguments);
}
});
請注意,'this.callParent(arguments)'與通過'Ext.create'定義的方法不兼容,請參閱我的答案以獲取更多詳細信息。 – 2012-07-17 22:47:59
我總是忘記這一點,謝謝Russ。 – 2012-07-18 11:09:26
它當然覺得它應該工作! – 2012-07-18 13:31:03
- 1. 是否有類似於OnOrientationChanged的方法?
- 2. 是否有類似於XmlWriter.WriteRaw方法的XmlReader方法?
- 3. Gson是否有類似@JsonProperty的方法?
- 4. 是否有Path.Combine()類型在JavaScript/jQuery的方法類似於.NET
- 5. AS3是否有類似於PHP的strtr()的方法?
- 6. wxPython中是否有類似於tk.IntVar()的方法?
- 7. JavaScript中是否有類似於objective-c中的方法?
- 8. 重寫initComponent()方法
- 9. 是否有類似於PdfReader的WordReader?
- 10. Flex是否有類似於jQuery的庫?
- 11. Python是否有類似於Java的System.arraycopy?
- 12. 是否有類似於「with」的功能?
- 13. angularjs是否有類似於jQuery的ajaxSetup?
- 14. 是否有類似於SMS的擴展?
- 15. iOS是否有類似於Android的RecyclerView?
- 16. Jquery:是否有一個類似於$(document).ready()的基於元素的方法?
- 17. Spring是否包含類似於BeanUtils填充方法的東西?
- 18. 是否有類似於Java中
- 19. 是否有類似於mongodb的$ inc的neo4j中的增量方法?
- 20. Excel中是否有類似於Ruby的拆分方法的函數?
- 21. Java是否有類似於Swift的willSet&didSet方法的屬性觀察器?
- 22. 是否有類似於聯合的聯合的句法快捷方式?
- 23. 是否有類似的Junit設置方法在任何的Mockito
- 24. Ruby是否有一個類似於Perl 6語法的插件?
- 25. 是否有@ HMTL.ACtionLink或類似於創建外部網頁鏈接的方法?
- 26. 是否有一種類似於數據庫的序列化方法
- 27. 在eloquent orm中是否有類似Model :: findOrFail($ id)的方法?
- 28. 在Perl中是否有類似Ruby的gsub方法?
- 29. JavaFX FXML - Button是否具有類似方法的OnEdit?
- 30. 在ruby中是否有一些類似php_info的方法?
我假設你已經嘗試添加initComponent內創建'()'函數? – sha 2012-07-17 11:47:55