Ich versuche eine Aktion auszuführen, wenn ein Benutzer scrollt, jedoch kann ich nicht auf den Bereich des Controllers zugreifen.
Mein Code ist:
(function() {
angular.module("myApp")
.controller("MyController", ['$window', function($window){
this.sidebarFixed = false;
angular.element($window).bind("scroll", function() {
console.log(this.sidebarFixed);
});
}]);
})();
Der Ausgang dieses ist undefined
. Wie kann ich innerhalb der Funktion auf this
zugreifen?
Dank. Wenn ich jedoch den Wert ändere, wird es in der Ansicht nicht aktualisiert. Wie kann ich das beheben? – rj93
Ich habe $ scope in meinen Controller injiziert und '$ scope. $ Apply()' aufgerufen und es aktualisiert nun die Ansicht, ist das der richtige Weg? – rj93
Da das Ereignis außerhalb des eckigen Kontextes auftritt, müssen Sie angle benachrichtigen, um einen Digest auszuführen. In den meisten Fällen kann '$ apply()' verwendet werden, aber da ein scroll-Ereignis passieren kann, ist es oft am besten, '$ timeout' zu verwenden – charlietfl