javascript - AngularJS 范围直到在 ui 中执行某些操作后才会更新,比如单击具有函数的对象

标签 javascript angularjs angularjs-scope digest

当视口(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();
    };
});

关于javascript - AngularJS 范围直到在 ui 中执行某些操作后才会更新,比如单击具有函数的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30724822/

相关文章:

javascript - 为什么tab1的内容不以 Angular 显示?

javascript - 单击按钮即可遍历每个 div 并更改类

javascript - Protractor 中多个/并行浏览器的 E2E 测试?

javascript - Sails.js 获得多对多关联计数

javascript - 如何在Puppeteer中实现page.type()?

javascript - 从 AngularJS 中的 Controller 更新指令值

javascript - 带有重定向到下载链接的 javascript 按钮的 Paypal 集成

javascript - 在 ng-repeat 中使用 ng-list 分割字符串

angularjs - Angular : how to express condition in ng-if directive?

javascript - AngularJs - 在准备好之前访问 $scope 变量的代码