getController() crea un nuevo objeto de controlador y hacer referencia a las tiendas a ella en controllers
matriz.
Eso significa que, si el controlador se carga usando getController(), no se eliminará, porque siempre habrá al menos una referencia almacenada en controllers
propiedad del objeto Aplicación.
Para cargar el controlador de forma que se destruirá (libere la memoria que ocupa) tan pronto como pierda cualquier referencia a objetos existentes (elementos DOM, componentes Ext, sus vistas, etc.) uno debería usar Ext.create de getController().
Aquí está el código:
var loadedController = Ext.create(
me.app.getModuleClassName(controller_name, 'controller'),
{
application: me.app,
id: Ext.id(null, 'controller')
}
);
loadedController.init(me.app);
loadedController.onLaunch(me.app);
loadedController
será variable local y va a salir de su alcance. Lo único que continuará uniendo el controlador recién creado a la "vida real" serán los elementos que el controlador crea a sí mismo.
Por ejemplo, el controlador puede crear una nueva vista en su método onLaunch(), que se inyectará en DOM, y el controlador escuchará ver los eventos usando los manejadores enlazan en su método init(). Mientras exista vista, el controlador también existirá. Pero cuando el usuario cierra la vista, la vista se destruirá y, dado que fue la última referencia a nuestro controlador, el controlador también se destruirá.
ACTUALIZACIÓN
oyentes creados con controlador se anexan a Ext.app.EventBus y pueden evitar la extracción automática de controlador, ya que también pueden mantener las referencias a dicho controlador.
Buena respuesta, profundizó en el tema :) –
¡Buena respuesta! Eso debe hacerse para solicitar una función en sencha – sra
. Buena respuesta, usted cubrió todo lo que tiene que ser eliminado :) ¿Cómo se prueba si el controlador realmente se borró? – bhovhannes