2012-08-09 16 views
6

In primo luogo, la mia domanda è voglio sapere quanto è diverso tra Ext.Define() e Ext.Create(), e voglio sapere come usare loro nel modo giustoExtjs4 MVC, Ext.define() e Ext.create()

ho rivisto i miei codici e molti tutorial Extjs4 MVC,

e ho trovato molti molti metodi Ext.define() nel progetto Extjs4 MVC.

Ho capito che il metodo Ext.define() crea un oggetto (CLASS).

E se ho bisogno di un pannello solo per esempio, non farò alcuna eredità del pannello, anche io non riutilizzare il pannello dopo inizializzato.

Poi, penso che ho bisogno di usare Ext.create() al posto di Ext.define().

Quindi, provo a cambiare il mio codice @. @;

In considerazione, era

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', {}) 
    } 
}); 

e posso cambiare a,

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

Dopo il cambiamento del codice, ho avuto un problema che non riesco a recuperare (grep) il pannello di controllo,

prima di me in questo modo prima,

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

this.getMyGrid(); 

ma dopo il cambiamento, non so come recuperare quel pannello nel controller.

e mentre eseguo una ricerca sul Web per scoprire come eseguirlo, mi chiedo semplicemente 'È giusto come ho capito su Ext.define() e Ext.create()? e perché molte persone usano il metodo Ext.define() anche se non lo usano più e non per ereditarietà? '

per favore mi consigli per capire i fondamentali di ExtJS.

Grazie!

risposta

6

My 2c: I sempre definire le cose e quindi solo crearlo (a meno che non sia un componente di 2 liner). Ciò significa che posso sempre riutilizzare un componente altrove, senza nemmeno dover pensare allo se lo voglio io.

Ext.define crea anche un errore al caricamento della pagina, invece del componente init/construct (a seconda di come viene scritto il codice), che, almeno per me, semplifica il debug.

Inoltre, sembra Ext.define è effettivamente più veloce, che è una specie di un grosso problema.http://jsperf.com/extjs-create-vs-define-create

Ext.define tende anche a semplificare l'architettura (in che ti costringe a pensare a ciò che un componente sta per essere chiamato, e che si presta ad un nome di file, per il caricatore automatico (che tra l'altro è un altro motivo per usare Ext.definehttp://docs.sencha.com/ext-js/4-1/#!/api/Ext.Loader)

Ext.define, con la parola chiave requires, permette anche di giocare con la creazione personalizzata build del pacchetto di Sencha tramite l'SDK (http://www.sencha.com/products/sdk-tools/) - sono un po 'incerto se questo è usato in ExtJS 4 però, o solo in touch

Avendo cantato le sue virtù, è comunque un compromesso tra la quantità di file, che è una complessità a sé stante.

Problemi correlati