我试图在视口(viewport)小于或等于641px时将类添加到侧边栏,并且在这种情况下,我必须注意窗口的宽度

    $scope.$watch(function(){
       return $window.innerWidth;
    }, function(value) {
        if (value <= 641) {
            logger.info('!!!less than 641');
            vm.singleColumn = true;
        };
    });

它会在首次加载时记录,但是当我调整大小时,我必须先单击一下,然后才能再次触发。例如。我调整了大小,然后单击了具有ng-click行为的项目,这是唯一的一次,它将再次记录。

我已经阅读了一些问题,可能是因为$ digest和$ apply?

有人可以照亮我的困惑。

最佳答案

您需要触发摘要周期,否则 View 不会意识到该值已更新。

$scope.$watch(function(){
   return $window.innerWidth;
}, function(value) {
    if (value <= 641) {
        logger.info('!!!less than 641');
        vm.singleColumn = true;
        $scope.$apply();
    };
});

09-25 18:21