Précédent   Forum des professionnels en informatique > Webmasters - Développement Web > JavaScript > Bibliothèques & Frameworks > Mootools
Mootools Forum d'entraide sur le framework MooTools. Avant de poster : Tutoriels Mootools, FAQ MooTools, Toutes les FAQ JavaScript
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 27/01/2011, 03h16   #1
Membre régulier
 
Homme
Développeur Web
Inscription : septembre 2008
Messages : 253
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : Corée

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : septembre 2008
Messages : 253
Points : 90
Points : 90
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 :
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 !
Fused est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/01/2011, 09h28   #2
Membre confirmé
 
Avatar de Nighty
 
Homme Lucas CORBEAUX
Chef de projet MOE
Inscription : février 2003
Messages : 158
Détails du profil
Informations personnelles :
Nom : Homme Lucas CORBEAUX
Âge : 28
Localisation : France, Maine et Loire (Pays de la Loire)

Informations professionnelles :
Activité : Chef de projet MOE

Informations forums :
Inscription : février 2003
Messages : 158
Points : 291
Points : 291
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 :
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 :
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
Nighty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/02/2011, 14h00   #3
Membre régulier
 
Homme
Développeur Web
Inscription : septembre 2008
Messages : 253
Détails du profil
Informations personnelles :
Sexe : Homme
Âge : 26
Localisation : Corée

Informations professionnelles :
Activité : Développeur Web

Informations forums :
Inscription : septembre 2008
Messages : 253
Points : 90
Points : 90
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 !
Fused est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 04h46.


 
 
 
 
Partenaires

Hébergement Web