2017-10-25 4 views
1

ich in einer Klasse versuchen einen Eventlistener hinzuzufügen, aber zu halten diese Fehler:es6 klasse. this.addEventListener

„Typeerror: this.win.addEventListener ist keine Funktion“

, wie ich das lösen kann?

Code:

class Ui { 
    constructor(el) { 
     this.win = $(window); 
     this.onResize = this.onResize.bind(this); 
     this.init(); 
    } 

    init() { 
     console.log(this.win); 
     this.addListeners(); 
    } 

    addListeners() { 
     this.win.addEventListener('resize', this.onResize); 
    } 

    onResize() { 
     console.log('test'); 
    } 
} 

export default Ui; 
+0

Warum wollen Sie das 'window' in einer Instanz der Klasse speichern müssen? – llama

+0

Ich glaube nicht, dass ich ein Problem mit der Klasse sehe, wie rufen Sie addListeners() auf? – slackOverflow

Antwort

2

jQuery Instanzen haben keine addEventListener Methode. Verwenden Sie stattdessen on.

addListeners() { 
    this.win.on('resize', this.onResize); 
} 
+0

Sie haben absolut Recht damit. – user2952238

1

jQuery Objekte sind Sammlungen, müssen wir das erste Element dieser colection erhalten:

this.win[0].addEventListener('resize', this.onResize);