AngularJS窗口滚动不更新范围

AngularJS窗口滚动不更新范围,angularjs,angularjs-scope,Angularjs,Angularjs Scope,由于这个问题,我损失了几个小时,我希望这个解决方案能节省一些人的时间 问题出现在Angular 1.x中,当尝试基于滚动事件更新范围时,它根本不会得到更新 var app = angular.module("sample", []); app.controller("myCtrl", function($scope, $window) { $window.onscroll = function () { console.info($window.scrollY);

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

问题出现在Angular 1.x中,当尝试基于滚动事件更新范围时,它根本不会得到更新

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

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

        $scope.scrollY = $window.scrollY;
    };    
});
代码笔


请注意,事件会正常触发,并且滚动值会完美地显示在控制台上。即使如此,视图也不能反映范围的变化。这太令人沮丧了。如果更改名称字段,则会更新其他属性。

答案很简单,请使用以下命令强制更新范围:

$scope.$apply();
取消对上述代码中相应行的注释,然后看到神奇的发生

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

我希望这能帮助别人