2011-10-04 11 views
20

Quando si utilizza initComponent rispetto a constructor?initComponent vs constructor quando si definisce un oggetto

Ho usato initComponent per estendere i miei oggetti, ma guardando i documenti per Ext.define li vediamo usando il costruttore dappertutto e poi posto. qual è la differenza?

confronto:

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

a

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

Sono consapevole del fatto che alcuni componenti non init (Im guardando a voi Ext.data.Store), che mi porta verso tendente solo su scrivere il costruttore, come dovrebbe essere universale.

risposta

36

constructor è lo standard OOP per l'inizializzazione di istanze di oggetti ed è disponibile in ogni classe ExtJS (tutto creato da Ext.define).

initComponent è estensione ExtJS per l'inizializzazione dei componenti - classi che si estendono Ext.Component. Utilizza il modello di metodo basato su modelli e abilita alcuni passaggi di inizializzazione standard prima e dopo l'init del componente personalizzato. Qualcosa di simile a questo:

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

miei di buone pratiche sono da utilizzare initComponent ogni volta che sto creando componente personalizzato e constructor solo per classi generiche.

+0

ciao, questa definizione è valida ancora adesso? Utilizzare la versione 3 di Extjs. La sua definizione può ancora essere utilizzata? Potrei ancora passarmi qualche link per me per studiare su InitComponent? Sono grato per l'aiuto. – durtto

Problemi correlati