2011-10-04 20 views
20

¿Cuándo debería estar usando initComponent en comparación con constructor?initComponent vs constructor al definir un objeto

He estado utilizando initComponent para extender mis objetos, pero mirando los documentos para Ext.define es verlos usando el constructor en todo lugar. ¿cuál es la diferencia?

comparar:

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); 
    } 
}); 

Soy consciente del hecho de que algunos componentes no init (Im que le mira Ext.data.Store), lo que me lleva hacia inclinándose hacia sólo sobre escribiendo el constructor, ya que eso debería ser universal.

Respuesta

36

constructor es estándar de OOP para inicializar instancias de objetos y está disponible en cada clase ExtJS (todo creado por Ext.define).

initComponent es la extensión ExtJS para inicializar componentes - las clases que se extienden Ext.Component. Utiliza un patrón de métodos con plantilla y permite algunos pasos de inicialización estándar antes y después de la inicialización de su componente personalizado. Algo como esto:

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

Mis mejores pratices son para usar initComponent siempre estoy creando componente personalizado y constructor sólo para clases genéricas.

+0

Hola, ¿esta definición todavía se cumple en este momento? Use la versión 3 de Extjs. ¿Su definición todavía se puede usar? ¿Todavía podría pasarme algunos enlaces para que estudie en InitComponent? Estoy agradecido por la ayuda. – durtto

Cuestiones relacionadas