2016-04-17 13 views
0

der folgende Code funktioniert, aber ich fühle, dass es einen besseren Weg gibt. Ich übergebe einen Verweis auf den Bereich der übergeordneten Funktion.Hohe Funktionsreferenz JS

var p=this; 
    this.nodeModal.find(".modal-footer .save").click(function(){ 
     p.saveAndClose(); 
    }); 

Gibt es eine einfachere Möglichkeit, eine Referenz für eine Funktion höherer Ordnung zu übergeben? Irgendeine Art von Bindung?

Antwort

2

Oder, wenn Sie ES6 verwenden, mit Pfeil Funktion:

this.nodeModal.find(".modal-footer .save").click(() => { 
    this.saveAndClose(); 
}); 
+0

Es funktioniert! Würdest du etwas mehr darüber erzählen, was mit der Pfeilfunktion passiert? Danke – tul1

+1

Sicher, sorry würde ich mehr davon erklären, wenn ich nicht Handy lol benutze. Pfeil-Funktion ist eine neue Funktion für ES6 und ist kompatibel für moderne Browser wie Chrome, aber um es in älteren Browsern zu verwenden, müssen Sie Ihren Code in ES5-Code mit einem Compiler wie Babel kompilieren. Pfeil-Funktion behalten Sie den Verweis von "das" innerhalb der Funktion, die Sie mehr unter https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Functions/Arrow_functions –

+0

BTW, unter der Haube lesen können Babel hat einfach das Gleiche gemacht wie du. Sie können versuchen, Ihren Code zu kompilieren und hineinschauen, so dass es nicht magisch erscheint. –

0

Sie suchen nach dem bind() method:

this.saveAndClose.bind(this) 
+0

ich mit bind tryed haben, aber es hat nicht funktionieren und es wird der folgende Fehler ausgegeben: TypeError: this.saveAndClose ist nicht definiert. Ich nehme an, da diese Funktion nicht im Funktionsbereich höherer Ordnung definiert ist. – tul1