AngularJS window 滚动不更新范围

AngularJS window scroll not updating scope

由于这个问题我浪费了几个小时,我希望这个解决方案能节省一些人的时间。

问题出在 Angular 1.x,尝试根据滚动事件更新 scope 时,根本没有更新!

var app = angular.module("sample", []); 

app.controller("myCtrl", function($scope, $window) {
    $window.onscroll = function () {
        console.info($window.scrollY);

        $scope.scrollY = $window.scrollY;
    };    
});

CodePen here

请注意,事件正常触发,scrollY值完美显示在控制台上。即使如此,视图也没有反映范围的变化。真令人沮丧。如果您更改名称字段,则其他属性也会更新。

答案很简单,强制更新范围使用:

$scope.$apply();

取消上面代码中相应行的注释,看看神奇的事情发生了。

这听起来很简单,但要做到这一点并不是那么快。

希望对大家有所帮助。