J'utilise ExtJS pour construire une fenêtre contenant plusieurs panneaux comme éléments. Un de ces panneaux contient un bouton.
Je veux attacher un gestionnaire à mon bouton tel que lorsque je clique sur le bouton, je peux masquer la fenêtre contenant les panneaux susmentionnés et ce bouton. P>
Ma question est la suivante: comment puis-je obtenir une référence à la fenêtre mère de mon bouton sans référencer la fenêtre par ID? Je veux littéralement une référence à l'instance ext.windows et non à l'instance ext.panel qui contient mon bouton. P>
Remarque: je ne veux pas référencer la fenêtre par ID parce que je suis sous-classement de l'ext.window classe, et donc l'ID de la fenêtre ne sera pas toujours la même. En bref, je crée une classe de l'assistant et lorsque je clique sur le bouton Annuler de l'assistant, je souhaite masquer la fenêtre de l'assistant contenant le bouton. P>
Voici mon code: P>
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: { ⦠} });
4 Réponses :
Dans votre configuration pour votre bouton, vous pouvez ajouter une portée: la propriété de Newwizardwindow? Je ne suis pas sûr à 100% si cela fonctionnera, mais je pense que ça va. Cela définira la portée de votre gestionnaire de bouton pour être la fenêtre, et à l'intérieur de la fonction de gestionnaire, vous pouvez simplement le faire. Ahide (); P>
avez-vous essayé cela? J'ai utilisé cette méthode dans un numéro similaire Stackoverflow.com/questions/8588968/extjs-button-scope > Et Chau ci-dessus, répondit-il ....
Que diriez-vous d'essayer le FindParentByType strong> (
String / ext.component / classe xtype,
[Booléen peu profond]): ext.container p>
trouver un conteneur au-dessus de ce composant
à n'importe quel niveau de xtype ou de classe. em> p>
blockQquote> Ici, vous pouvez utiliser le xtype em> au lieu de id em> comme référence et le xtype em> est la même quelle que soit l'instance Vous avez de ce type. P> FindParentByType (...) code> méthode? Je me souviens d'avoir utilisé quelques fois.
buttons: [{
text: 'Cancel',
handler: function() {
// REFERENCE WizardWindow instance here.
var parentWindow = this.findParentByType('xtypelizardwindow');
}
}]
J'aimerais pouvoir donner cette réponse A +10 :)
Vous pouvez transmettre la référence comme portée.
Ici, cela ne serait-il pas le bouton? Est-ce votre intention?
HMM, si vous utilisez «cela» en ligne, je ne pense pas que cela fonctionnera. J'ai posé une question similaire. Stackoverflow.com/questions/8588968/extjs-button-scope
Cela fonctionne et FYI est la bonne façon de le faire! Ce code> à l'intérieur du gestionnaire deviendra la classe elle-même.
Ceci.En -erct donnera également référence à l'objet parent, qui est conteneur. Comme il utilise this.findparentByType (parent xtype) p>