2017-06-08 2 views
0

Je dois créer un seul toast sur l'écran de mon application, aujourd'hui si je clique plusieurs fois sur un bouton, plusieurs toasts sont présentés.Comment créer un toast singleton dans Extjs

EDIT:

showToast: function(message) { 
    var openedToast = Ext.get(document.querySelector('[id^="toast-"]')); 
    if (openedToast != null) { 
     var toast = Ext.getCmp(openedToast.id); 
     toast.close(); 
    } 
    Ext.defer(function() { 
     Ext.toast({ 
      html: message, 
      align: 't' 
     }); 
    }, 80); 
} 

Mais si l'utilisateur clique sur le bouton rapidement, le pain grillé est créé plusieurs fois

+0

besoin beaucoup plus de détails que cela. Publiez du code, créez un plunkr si possible, parlez de ce que vous avez essayé, quel est le comportement attendu, etc. – TomSlick

+0

Mais que voulez-vous exactement faire avec d'autres toasts (si vous voulez afficher plusieurs toasts en même temps)? Juste ignorer ou enlever le toast précédent et montrer un nouveau ou ...? –

+0

Je dois retirer le toast précédent. Voir l'édition –

Répondre

1

Il suffit de donner un identifiant unique et vérifier si elle existe déjà avant de créer un nouveau.

{ 
    xtype: 'button', 
    handler: function(){ 
     if(!Ext.ComponentQuery.query('#myToast').length){ 
      Ext.toast({ 
       itemId: 'myToast', 
       html: 'toast!' 
      }); 
     } 
    } 
} 

» Fiddle