Estoy usando ExtJS para crear una ventana que contenga varios paneles como elementos. Uno de estos paneles contiene un botón.¿Cómo hacer referencia al objeto del contenedor antecesor desde un control ExtJS?
Quiero adjuntar un controlador a mi botón para que cuando haga clic en el botón, pueda ocultar la ventana que contiene los paneles mencionados anteriormente y este botón.
Mi pregunta es: ¿cómo puedo obtener una referencia a la ventana primaria de mi botón SIN hacer referencia a la ventana por ID? Literalmente quiero una referencia a la instancia de Ext.Window y no a la instancia de Ext.Panel que contiene mi botón.
Nota: No quiero hacer referencia a la ventana por id porque estoy subclasificando la clase Ext.Window y, por lo tanto, la id de la ventana no siempre será la misma. En resumen, estoy creando una clase de asistente, y cuando hago clic en el botón Cancelar del asistente, quiero ocultar la ventana del asistente que contiene el botón.
Aquí está mi código:
var newWizardWindow = new WizardWindow({
id: 'newWizardWindow',
title: 'New',
items: [
...
],
buttons: [{
text: 'Cancel',
handler: function() {
// REFERENCE WizardWindow instance here.
}
},{
id: 'newWizardPreviousButton',
text: '« Previous',
disabled: true,
handler: newWizardNavigator.createDelegate(this, [-1])
},{
id: 'newWizardNextButton',
text: 'Next »',
handler: newWizardNavigator.createDelegate(this, [1])
}],
listeners: {
…
}
});
Aquí están algunas ideas que he llegado con la medida de lo cómo ocultar la ventana:
- this.ownerCt.ownerCt (siendo este el botón) No es favorable, ya que con una actualización futura de ExtJS, el número de padres entre la ventana y el botón podría cambiar.
- De alguna manera almacenar una referencia a la instancia de WizardWindow en la clase WizardWindow.
- Encuentra la clase de WizardWindow [CSS] más cercana en jQuery fashion: $ (this) .closest ('. WizardWindow'). Tal vez this.findByParentType ('WizardWindow')?
Ojalá pudiera dar esta respuesta a +10 :) –