2009-09-17 6 views
2

J'ai un panneau Ext West depuis ma fenêtre d'affichage et j'ai un gestionnaire sur un bouton qui supprime d'abord tous les éléments de l'ouest puis affiche un autre élément, puis fait un doLayout(). Il y a donc 3 choses que cette fonction fait en cliquant sur le bouton. Je voudrais ajouter un masque sur le panneau ouest lorsque le bouton est cliqué et démasquer après que toutes les 3 tâches sont terminées.Panneau de masque ExtJS pendant que les actions sont effectuées

Voici le panneau:

{ 
       region: 'west', 
       id: 'west-panel', 
       title: 'West', 
       split: true, 
       width: 200, 
       minSize: 175, 
       maxSize: 400, 
       collapsible: true, 
       margins: '0 0 0 5', 
       layout: 'fit' 
       items: [leftMenu] 
      } 

Et voilà comment je fais les tâches:

west.removeAll(); 
west.add(indexHeaderPanel); 
west.doLayout(); 

Est-ce possible? Je donnerai plus d'informations si demandé. Je vous remercie.

Répondre

12

Vous faites littéralement masque() puis démasquez() avant et après votre bloc de code. Si quelque chose dans votre code s'exécute de manière asynchrone, alors assurez-vous que le masque est fait dans un rappel approprié. A titre d'exemple:

buttons: [{ 
     text: 'Refresh West Panel', 
     handler: function(){ 
      var w = Ext.getCmp('west-panel'); 
      w.getEl().mask(); 
      w.removeAll(); 
      w.add(indexHeaderPanel); // assuming you have this ref! 
      w.doLayout(); 
      w.getEl().unmask(); 
     } 
    }] 

Si votre logique s'exécute assez rapidement, vous ne verrez jamais le masquage. Pour vérifier que cela fonctionne, vous pouvez mettre dans un délai de test.

buttons: [{ 
     text: 'Foo', 
     handler: function(){ 
      var w = Ext.getCmp('west-panel'); 
      w.getEl().mask(); 

      // do whatever 

      (function(){ 
       w.getEl().unmask(); 
      }).defer(1000, this); 
     } 
    }] 

w.getEl() masque() [de l'ONU] masquera le panneau entier (y compris en-tête/pied de page). Pour masquer seulement le contenu, faites w. corps. [Un] masque().

Questions connexes