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

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Bibliothèques & Frameworks Discussion :

Accéder à l'objet parent dans un Event [MooTools]


Sujet :

Bibliothèques & Frameworks

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Points : 122
    Points
    122
    Par défaut Accéder à l'objet parent dans un Event
    Bonjour,

    Ma question est dans le titre !

    Rien de mieux qu'un petit bout de code pour visualiser cette question:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function MyObject() {
      this.myVar = "Hello";
      unElement.addEvent('click', function(e) {
        // Comment accéder à this.myVar ici ?
      });
    };
    Merci de vos lumières !

  2. #2
    En attente de confirmation mail

    Homme Profil pro
    Développeur Web
    Inscrit en
    Février 2003
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Février 2003
    Messages : 253
    Points : 637
    Points
    637
    Par défaut
    Bonjour,

    Tu as deux façons de faire.

    Soit tu as besoin d'accéder a l'élément déclencheur de l'évènement avec this, le mieux est de créer une fermeture (ou closure : http://fr.wikipedia.org/wiki/Fermetu...nformatique%29 )

    En gros :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    function MyObject() {
      var parentObject = this;
      this.myVar = "Hello";
      unElement.addEvent('click', function(e) {
        alert(parentObject.myVar); // parentObject ici est celui déclaré plus haut
      });
    };
    Je ne te recommande cette façon de faire que si tu es obligé d'accéder à unElement depuis le onClick par l'intermédiaire de this, et c'est quasiment toujours contournable. Aussi voici la deuxième et la façon la plus "Mootoolsienne" de faire, le bind. D'abord le code, ensuite les explications :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    function MyObject() {
      this.myVar = "Hello";
      unElement.addEvent('click', function(e) {
        alert(this.myVar); // this est ici l'objet parent, pas unElement, grâce...
      }.bind(this)); // ...à la méthode Function.bind()
    };
    L'explication : Mootools propose une méthode bind() à la classe Function :
    http://mootools.net/docs/core/Types/...#Function:bind

    Cette méthode permet de lier une fonction à un objet différent, ici on indique donc d'utiliser this dans le contexte de l'objet parent.

    Soyons honnête c'est un des points les plus difficiles à cerner concernant le développement avec Mootools (et plus généralement, en Javascript), mais avec un peu de doc et de pratique, ça devrait se faire

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2008
    Messages
    253
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : Corée

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2008
    Messages : 253
    Points : 122
    Points
    122
    Par défaut
    Je ne connaissais pas cette fonction "bind" de Mootools.

    Je sens que cela va me changer beaucoup de chose.
    Je faisais de la façon que tu montre dans ton premier exemple, mais pas pratique, lorsque l'on a pas mal de code.

    Dommage qu'il n'y ai pas de "super" en javascript !

    Merci beaucoup pour ta réponse !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/12/2010, 21h25
  2. Accéder à un objet imbriqué dans la session
    Par hadler dans le forum Struts 1
    Réponses: 4
    Dernier message: 05/02/2008, 13h55
  3. accéder à un objet texte dans le crystal report
    Par zerocoolyoussef dans le forum C#
    Réponses: 1
    Dernier message: 10/12/2007, 12h53
  4. Accéder à l'objet 'session' dans le code du controleur
    Par chat_roux dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 03/12/2007, 20h37
  5. Réponses: 1
    Dernier message: 11/07/2006, 12h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo