IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Ext JS/Sencha

FAQ Ext JS/SenchaConsultez toutes les FAQ

Nombre d'auteurs : 8, nombre de questions : 59, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireGestion des événements

Ext-JS définit un ensemble de classes et d'objets servant à gérer les événements.

L'ensemble se base sur le Design Pattern Observable.

L'objet Ext.EventManager est le gestionnaire d'événements de votre application. C'est un singleton qui est défini par le framework.

Tous les événements sont encapsulés dans un objet Ext.EventObject, que ce soit des événements du système, du DOM, du framework ou de votre application.

Les objets capables d'émettre des événements dérivent (implémentent) Ext.Observable.

Lors de l'instanciation de tels objets, l'attribut listener liste les handlers que vous voulez attacher aux événements de votre objet.

 
Sélectionnez
var newEmployee = new Employee({
    name: employeeName,
    listeners: {
        quit: function() {
            // By default, "this" will be the object that fired the event
            alert(this.name + " has quit!");
        }
    }
});

Mais il est aussi possible d'attacher dynamiquement un handler.

 
Sélectionnez
newEmployee.on('quit', function() {
            alert(this.name + " has quit!");
        }
);
Créé le 10 juillet 2011  par sekaijin

Ext-JS attache son propre gestionnaire d'événements à chaque objet le nécessitant. Il distribue ensuite l'événement à tous les handlers qui sont attachés à l'événement. Lorsqu'on veut être certain de faire un traitement sur un événement avant que tous les traitements des handlers soient déclenchés, il suffit de définir un intercepteur avec la méthode capture.

 
Sélectionnez
Ext.util.Observable.capture(newEmployee function(event) {
      ...
   }
);
Créé le 10 juillet 2011  par sekaijin

Lorsqu'on définit un handler, la fonction fournie s'exécute dans le contexte de l'objet ayant généré l'événement. Si on passe en paramètre une méthode d'un autre objet à la méthode, lors de l'exécution, this représentera l'objet ayant émis l'événement et non celui à l'origine de la méthode (ceci est le fonctionnement de JavaScript).

Pour pallier cette difficulté, Ext-JS permet de définir un attribut scope qui sera l'objet sur lequel sera appelée la méthode :

 
Sélectionnez
Ext.define('MyApp.Job', {
   ...
   foo : function() {
      ...
   }
}
newJob = new MyApp.Job');
//On 'quit' event on newEmployee call newJob.foo()
newEmployee.on('quit', foo, newJob);
Créé le 10 juillet 2011  par sekaijin

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2011 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.