Estoy empezando a elegir Sencha Touch 2 MVC. Tengo mucha experiencia Ext 3, pero este es un mundo totalmente nuevo.Ext.define/Ext.extend en Sencha Touch 2
No puedo llegar muy lejos en la construcción de una vista. Tomé mi código en dos direcciones según lo que he visto en Internet, y ninguno de los dos funciona.
Path 1
Mis app.js:
Ext.application({
name: 'BkAdmin',
views: ['LoginForm'],
launch: function() {
Ext.create('BkAdmin.view.LoginForm');
}
});
mi punto de vista/LoginForm.js:
Ext.define('BkAdmin.view.LoginForm', {
extend: 'Ext.form.FormPanel',
config: {
fullscreen: true,
initComponent: function() {
alert('yo!');
BkAdmin.view.LoginForm.superclass.initComponent.apply(this, arguments);
}
}
}
);
Esto carga sin errores, e incluso puede añadir elementos de formulario en la sección de configuración. Sin embargo, initComponent() inexplicablemente nunca recibe llamadas, por lo que la vista es completamente inflexible.
Ruta 2
Mis app.js:
Ext.application({
name: 'BkAdmin',
views: ['LoginForm'],
launch: function() {
BkAdmin.view.LoginForm = new BkAdmin.view.LoginForm();
}
});
mi punto de vista/LoginForm.js:
BkAdmin.view.LoginForm = Ext.extend(Ext.form.FormPanel, {
fullscreen: true,
initComponent: function() {
alert('yo!');
BkAdmin.view.LoginForm.superclass.initComponent.apply(this, arguments);
}
});
Este de plano no funciona. Informes de Chrome 'No se puede establecer la propiedad' LoginForm 'de undefined' ... ¿cómo diablos la vista no se definió? Además, dice 'Las siguientes clases no se declaran aunque sus archivos se hayan cargado:' BkAdmin.view.LoginForm '.' Claro me parece declarado.
Muchas preguntas aquí: ¿qué hice mal en las rutas anteriores? ¿Cómo puedo hacer que se llame a initComponent() en la ruta 1 y obtener la ruta 2 para que funcione? ¿Qué código es mejor entre comillas que usar?
Gracias!