2016-05-27 16 views
0

Ich habe gerade mit der neuen Version von Laravel eckig begonnen. Ich versuche Code hinzuzufügen, um eine rootScope-Variable beim Scrollen auf der Seite zu ändern. das ist was ich bisher habe.

Das Problem ist, dass dies. $ RootScope ist innerhalb der eckigen.Element undefiniert. Ich habe versucht, dies zu vergeben. $ RootScope außerhalb angle.element, so dass es innerhalb der Bind-Funktion verwendet werden kann, aber dann scheint die Datenbindung zu funktionieren. Irgendwelche Vorschläge würden sehr geschätzt. Wenn die Antwort offensichtlich ist, bitte entschuldigen Sie, ich bin sehr neu in eckigen 1.5 und ECMA6.

Antwort

0

Es gibt eine bessere Möglichkeit, den lexikalischen Wert mit der neuen Syntax ES6 Lambda => einzustellen. Ändern Sie den Code Lambda zu verwenden, wie unten, und Sie werden den richtigen Wert von this erhalten:

$onInit =() => { 
    this.$rootScope.showTestBanner = true; 
    let $rootScope = this.$rootScope; 

    angular.element(this.$window).bind("scroll", function() { 
    if (this.pageYOffset >= 20) { 
     this.$rootScope.showTestBanner = false; 
    } 
    }); 
} 

Der Wert this ist lexikalisch korrekt eingestellt innerhalb des constructor aber nicht in anderen Methoden auf die Klasse. Also müssen Sie alle Methoden ändern, um => zu verwenden, um korrekten lexikalischen Wert dieses

+0

zu haben Die Pfeilsyntax sollte im Scroll-Handler sein, nicht die '$ onInit'-Funktion (die vermutlich funktioniert, wenn der Scroll aufgerufen wird) – CodingIntrigue