der Grund, warum dies nicht der Fall funktioniert, dass durch method(this)
tun Sie es tatsächlich sofort aufrufen. method.bind(checkbox)
wird die Funktion dekorieren und den Gültigkeitsbereich des Kontrollkästchens ändern, wenn es später aufgerufen wird.
warum nicht Proxy es?
var self = this;
checkbox.addEvent('change', function(e) {
self.checkBoxChangeAgain(this);
});
new Class({
checkBoxChangeAgain: function(checkbox) {
this; // instance
checkbox; // == org checkbox
}
});
Standardmäßig ist das erste Argument für einen Event-Handler das Event und der Scope das Trigger-Element.
daher:
checkbox.addEvent('change', this.checkBoxChangeAgain);
wird das bedeuten:
new Class({
checkBoxChangeAgain: function(event) {
this === event.target;
}
});
was bedeutet, können Sie auch:
checkbox.addEvent('change', this.checkBoxChangeAgain.bind(this));
und das wird funktionieren wie:
new Class({
checkBoxChangeAgain: function(event) {
this != event.target; // true
event.target === checkbox; // true
this; // the class instance
}
});
Ich hoffe, das gibt Ihnen Ideen. Suchen Sie auch hier auf SO nach bindWithEvent - insbesondere Ersatz für Bindung mit Ereignis.
Dank zu benutzen, ich um ihn schließlich bekam Bypass verwenden. Deine Antwort hat mich jedoch in die richtige Richtung gelenkt. – Ashley