Extjs de fermeture de fenêtre de l'événement
J'ai une fenêtre avec un bouton annuler et le défaut fermer[x]. Lorsque l'utilisateur clique sur le bouton annuler, il doit vérifier pour un drapeau spécifique et la fermeture de la fenêtre et les mises à jour de la db. Je suis aide-moi.close (); pour la fermeture de la fenêtre par le bouton annuler. Lorsque l'utilisateur clique sur [x], il doit rechercher le même drapeau et les mises à jour de la db et puis fermez la fenêtre. Pour vérifier que le drapeau de l'état, j'ai ajouté un auditeur
Cet écouteur fonctionne très bien. Mais après l'ajout de l'auditeur, en cliquant sur le bouton annuler, la proximité de l'événement est appelé deux fois. De sorte que le db mise à jour arrive deux fois.
Quelqu'un pourrait-il me conseiller comment gérer la [x] fermer événement pour la fenêtre
Ext.define('MyApp.view.updateForm', {
extend: 'Ext.window.Window',
height: 600,
width: 800,
layout: {
type: 'absolute'
},
title: 'Update Window',
modal: true,
initComponent: function() {
Ext.applyIf(me, {
items: [
{
xtype: 'button',
id:'btnCancel',
handler : function(){
if(flag == true){
//add to db
me.close(this);
}
}
}]
});
me.callParent(arguments);
},
listeners:{
close:function(){
if(flag == true){
alert("close window");
//add to db
}
}
}
});
OriginalL'auteur user1049057 | 2013-03-13
Vous devez vous connecter pour publier un commentaire.
J'ai fait cette mise en œuvre avec quelques différences mineures et peuvent témoigner que cela fonctionne exactement comme prévu.
Voici mon code:
Cela fonctionne parfaitement. Qui me dit que les problèmes sont ailleurs dans votre code.
OriginalL'auteur dbrin
Une solution serait de simplement appeler
close
lorsque leCancel
le bouton est pressé. I. e. ne pas effectuer la(flag == true)
de vérifier lors de laCancel
est pressé. Ce ne sera pas causer desclose
être appelé deux fois.Hmm vous avez aucune chance de regarder dans la Fenêtre
beforeclose
événement? Je pense qu'il fournit la bonne place où pour l'exécution de votre condition et de retourtrue
oufalse
selon que vous voulez vraiment fermer la fenêtre ou pas.Salut, j'ai essayé beforeclose. Même alors, lorsque je clique sur annuler, fermer est appelé deux fois. auditeurs:{ beforeclose:function(){ alert("avant de fermer"); if(flag == true){ alert("fermer la fenêtre"); } } }
Vous devriez avoir la
write to db
partie dans un seul endroit; idéalement, si la fenêtre est fermée (c'est à dire si vous allez retourner la valeur true à partir debeforeclose
). Est-ce que votre code est cette structure?OriginalL'auteur Joseph Victor Zammit