extjs4 - docs - extjs 4 panel
initComponent vs constructor al definir un objeto (1)
constructor
es un estándar de POO para inicializar instancias de objetos y está disponible en todas las clases de ExtJS (todo lo creado por Ext.define
).
initComponent
es la extensión ExtJS para inicializar componentes: clases que extienden Ext.Component
. Utiliza un patrón de método con plantilla y habilita algunos pasos de inicialización estándar antes y después de su componente personalizado init. Algo como esto:
Ext.Component.constructor() {
- init events
- apply config
- create plugins
- ...
- your custom component initialization (initComponent)
- ...
- init plugins
- etc.
}
Mis mejores prácticas son usar initComponent
cuando estoy creando componentes y constructor
solo para clases genéricas.
¿Cuándo debo usar initComponent
comparación con el constructor
?
He estado usando initComponent para extender mis objetos, pero mirar los documentos para Ext.define es verlos usando el constructor por todas partes y luego colocarlos. ¿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 se inician (Im te mira Ext.data.Store
), lo que me lleva a inclinarme hacia escribir más sobre el constructor, ya que debería ser universal.