2017-09-07 2 views
0

Je suis un peu en difficulté avec les événements. Je veux la classe A à déclencher un événement et la classe B attraperai cet événement et transmettre les données d'événement à sa propre méthode:Fonction de rappel d'événement hors de portée

class ClassA { 
    constructor() { 
     window.addEventListener("fire", function (e) { this.fired(e.detail); }); //<--- not working 
    } 

    fired(data) { 
     console.log("fired by: "+data); 
    } 
} 

class ClassB { 
    constructor() { 
     var event = new CustomEvent("fire", { detail: { data: "John Doe" } }); 
     window.dispatchEvent(event); 
     console.log("fired"); 
    } 
} 

new ClassA(); //adds event listener 
new ClassB(); //event dispatch 

Répondre

0

Il semble que la portée de ce qui ne se réfère pas à la classe. Vous pouvez utiliser une fonction de flèche à la place dans votre ClassA:

window.addEventListener("fire", (e) => { this.fired(e.detail); })