2012-08-09 19 views
6

सबसे पहले, मेरा सवाल यह है कि मैं जानना चाहता हूं कि Ext.Define() और Ext.Create(), के बीच कितना अलग है और मैं जानना चाहता हूं कि इसका उपयोग कैसे करें उन्हें सही तरीके से।Extjs4 एमवीसी, Ext.define() और Ext.create()

मैं अपने कोड और कई Extjs4 MVC ट्यूटोरियल,

की समीक्षा की और मैं Extjs4 MVC परियोजना में कई कई Ext.define() पद्धतियों पाया।

मैं समझता हूं Ext.define() विधि एक ऑब्जेक्ट (क्लास) बनाते हैं।

और यदि मुझे उदाहरण के लिए केवल एक पैनल की आवश्यकता है, तो मैं पैनल की कोई विरासत नहीं बनाउंगा, मैं भी आरंभ करने के बाद पैनल का पुन: उपयोग नहीं करूंगा।

फिर, मुझे लगता है कि मुझे Ext.define() के बजाय Ext.create() का उपयोग करने की आवश्यकता है।

तो, मैं अपना कोड @। @ बदलने की कोशिश करता हूं;

ध्यान में रखते हुए यह

Ext.Define("App.view.MyGrid",{ 
    extend : 'Ext.grid.panel', 
    alias : 'widget.MyGrid', 
    initComponent : function(){ 
     this.columns : [{ header: 'column' }]; 
     this.store : Ext.create('Ext.data.ArrayStore', {}) 
    } 
}); 

था और मैं करने के लिए बदलने के लिए,

var myGrid = Ext.create('Ext.grid.Panel', { 
    layout: 'fit', 
    border: false, 
    columns: [{ header: 'column' }], 
    store: Ext.create('Ext.data.ArrayStore', {}) 
}); 

परिवर्तन के बाद कोड, मैं एक समस्या यह है कि मैं प्राप्त नहीं कर सकता (ग्रेप) नियंत्रक में पैनल है,

इससे पहले कि मैं पहले इस तरह किया था,

refs: [ 
     { 
      ref: 'myGrid', 
      selector: '', 
      xtype: 'MyGrid', //view - alias 
      autoCreate: true 
     } 
] 

this.getMyGrid(); 

लेकिन परिवर्तन के बाद, मुझे नहीं पता कि उस पैनल को नियंत्रक में कैसे पुनर्प्राप्त किया जाए।

और इसे खोजने के लिए वेब खोजते समय, मुझे आश्चर्य है कि 'क्या यह सही है कि मैं Ext.define() और Ext.create() के बारे में कैसे समझता हूं? और क्यों कई लोग Ext.define() विधि का उपयोग कर रहे हैं, फिर भी वे विरासत के लिए फिर से उपयोग नहीं करते हैं? '

कृपया मुझे एक्स्टजे के मूलभूत सिद्धांतों को समझने के लिए सलाह दें।

धन्यवाद!

उत्तर

6

मेरा 2 सी: I हमेशा सामान को परिभाषित करता है, और उसके बाद बस इसे बनाएं (जब तक कि यह 2 लाइनर घटक न हो)। इसका मतलब है कि मैं हमेशा के बारे में सोचने के बिना, कहीं भी एक घटक का पुन: उपयोग कर सकता हूं चाहे मैं चाहता हूं।

Ext.define घटक इनपुट/निर्माण (कोड कैसे लिखा जाता है) के बजाए पृष्ठ लोड पर एक त्रुटि उत्पन्न करता है, जो कम से कम मेरे लिए डिबगिंग को आसान बनाता है।

इसके अलावा, ऐसा लगता है कि Ext.define वास्तव में तेज़ है, जो कि एक बड़ा सौदा है।http://jsperf.com/extjs-create-vs-define-create

Ext.define भी वास्तुकला (सरल बनाने के लिए मजबूर करता है कि यह तुम क्या एक घटक के नाम से जाना जा रहा है के बारे में सोचना जाता है, और है कि एक फ़ाइल नाम को ही उधार देता है, autoloader के लिए (जो संयोग से एक और कारण का उपयोग करने के लिए है Ext.definehttp://docs.sencha.com/ext-js/4-1/#!/api/Ext.Loader)

Ext.define, requires कीवर्ड के साथ भी आप कस्टम बनाने के साथ खेलने की सुविधा देता है एसडीके (http://www.sencha.com/products/sdk-tools/) के माध्यम से Sencha पैकेज का बनाता है - मैं कुछ हद तक अनिश्चित हूं इस या केवल में हालांकि ExtJS 4 में उपयोग किया जाए, स्पर्श करें।

अपने गुणों को गाते हुए, यह निश्चित रूप से फाइलों की मात्रा के बीच व्यापार-बंद है, जो कि इसकी जटिलता है।

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