11
votes

Comment faire référence à l'objet conteneur d'ancêtre d'un contrôle extjs?

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: {
    …
  }
});


0 commentaires

4 Réponses :


1
votes

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 ();


1 commentaires

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 ....



9
votes

Que diriez-vous d'essayer le FindParentByType (...) code> méthode? Je me souviens d'avoir utilisé quelques fois.

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>

buttons: [{
    text: 'Cancel',
    handler: function() {
        // REFERENCE WizardWindow instance here.
        var parentWindow = this.findParentByType('xtypelizardwindow');
    }
}]


1 commentaires

J'aimerais pouvoir donner cette réponse A +10 :)




0
votes

Ceci.En -erct donnera également référence à l'objet parent, qui est conteneur. Comme il utilise this.findparentByType (parent xtype)


0 commentaires