2010-10-31 3 views
2

Je me demande comment remplacer la fonction bindWithEvent dans Mootools 1.3, l'exemple dans la documentation est très basique:comment remplacer bindwithevent dans Mootools 1.3

Element.addEvent('click', function(e){ 
myFunction.bind(bind, [e]);}); 

Mais, qu'en est-il si je dois passer un param à le gestionnaire d'événement? C'est comme ça dans Mootools 1.2:

Element.addEvent('click', function(e, param) { e.stop(); alert(param) }.bindWithEvent(this,['text']); 

Une idée sur la façon de remplacer cela dans Mootools 1.3.

Mise à jour: je l'ai trouvé une solution très laid, mais moins cela fonctionne pendant que je trouve une solution intégrée:

Element.addEvent('click', function(e){ e.stop(); this.bind.myFunc(this.param);}.bind({bind:this, param: 'text'})); 
+0

s'il vous plaît mettre à jour avec correction et se transformer en une communauté wiki pour les autres de voir que cette question est posée beaucoup ces derniers temps –

Répondre

3

il est difficile d'expliquer pourquoi il a obtenu dépréciée bien.

exemple dans un contexte de classe:

var foo = new Class({ 
    initialize: function(el) { 
     document.id(el).addEvent('click', function(event){ 
      this.foo(event, "hello"); 
     }.bind(this)); 
    }, 
    foo: function(event, what) { 
     console.log(event, this); // this is the class instance 
     alert(what); 
    } 
}); 

new foo("foo"); 
+0

J'aime ça! Mais le contexte "this" n'est-il pas perdu dans 'myFunction'? – Savageman

+0

pas vraiment. http://www.jsfiddle.net/dimitar/Ty5DJ/ - lisez mon exemple révisé. vous pouvez toujours utiliser .pass lorsque vous appelez la fonction pour changer la portée ... –

+0

Que se passe-t-il si j'ai besoin de passer un paramètre "what" qui est un var en dehors du gestionnaire d'événements document.id (el) .addEvent (' cliquez sur ', function (event) {...} .bind (this)); – aartiles