2011-10-04 10 views
20

constructor की तुलना में मुझे initComponent का उपयोग कब करना चाहिए?किसी ऑब्जेक्ट को परिभाषित करते समय initComponent बनाम कन्स्ट्रक्टर

मैं अपनी ऑब्जेक्ट्स का विस्तार करने के लिए initComponent का उपयोग कर रहा हूं, लेकिन Ext.define के लिए दस्तावेज़ों को देखकर उन्हें पूरे स्थान पर कन्स्ट्रक्टर का उपयोग करके देखा जाता है। अंतर क्या है?

तुलना:

Ext.define('My.app.PanelPart2', { 
    extend: 'My.app.Panel', 
    constructor: function (config) { 
     this.callSuper(arguments); // calls My.app.Panel's constructor 
     //... 
    } 
}); 

Ext.define('My.app.PanelPart2', { 
    extend: 'My.app.Panel', 
    initComponent: function (config) { 
     Ext.apply(this, config); 
     this.callParent(arguments); 
    } 
}); 

लिए मैं तथ्य यह है कि कुछ घटकों init नहीं है के बारे में पता कर रहा हूँ, (आईएम आप Ext.data.Store को देखकर) जो मुझे केवल अधिक की ओर झुकाव की ओर ले जाता है कन्स्ट्रक्टर लिखना, क्योंकि यह सार्वभौमिक होना चाहिए।

उत्तर

36

constructor ऑब्जेक्ट इंस्टेंस प्रारंभ करने के लिए ओओपी मानक है और प्रत्येक एक्सटीजेएस वर्ग (Ext.define द्वारा बनाई गई सभी चीज़ों में उपलब्ध है) में उपलब्ध है।

initComponent घटक शुरू करने के लिए ExtJS एक्सटेंशन है - कक्षाएं Ext.Component तक फैली हुई हैं। यह templated विधि पैटर्न का उपयोग करता है और आपके कस्टम घटक init से पहले और बाद में कुछ मानक प्रारंभिक चरणों को सक्षम बनाता है। कुछ इस तरह:

Ext.Component.constructor() { 
    - init events 
    - apply config 
    - create plugins 
    - ... 
    - your custom component initialization (initComponent) 
    - ... 
    - init plugins 
    - etc. 
} 

मेरे सबसे अच्छे pratices जब भी मैं केवल सामान्य वर्ग के लिए कस्टम घटक और constructor बना रहा हूं initComponent उपयोग करने के लिए कर रहे हैं।

+0

हैलो, यह परिभाषा अभी भी अभी भी है? Extjs के संस्करण 3 का प्रयोग करें। इसकी परिभाषा अभी भी उपयोग की जा सकती है? IitComponent पर अध्ययन करने के लिए मैं अभी भी मेरे लिए कुछ लिंक पास कर सकता हूं? मैं मदद के लिए आभारी हूँ। – durtto

संबंधित मुद्दे

 संबंधित मुद्दे