窗口innerWidth大小更改时的AngularJS事件

利亚德·利夫纳特(Liad Livnat)

我正在寻找一种观察窗口内部宽度大小变化的方法。我尝试了以下操作,但没有成功:

$scope.$watch('window.innerWidth', function() {
     console.log(window.innerWidth);
});

有什么建议么?

土清

我们可以使用jQuery来做到这一点:

$(window).resize(function(){
    alert(window.innerWidth);

    $scope.$apply(function(){
       //do something to update current scope based on the new innerWidth and let angular update the view.
    });
});

请注意,将事件处理程序绑定在可以重新创建的范围内(例如ng-repeat范围,指令范围等)时,在销毁该范围时应取消绑定事件处理程序。如果不执行此操作,则每次重新创建范围(重新运行控制器)时,都会再添加1个处理程序,从而导致意外行为和泄漏。

在这种情况下,您可能需要标识附加的处理程序:

  $(window).on("resize.doResize", function (){
      alert(window.innerWidth);

      $scope.$apply(function(){
          //do something to update current scope based on the new innerWidth and let angular update the view.
      });
  });

  $scope.$on("$destroy",function (){
      $(window).off("resize.doResize"); //remove the handler added earlier
  });

在此示例中,我使用的是jQuery中的事件名称空间您可以根据自己的要求进行不同的处理。

改进:如果您的事件处理程序需要花费一些时间来处理,为避免用户可能会不断调整窗口大小,导致事件处理程序多次运行,我们可以考虑对函数进行节流如果使用下划线,则可以尝试:

$(window).on("resize.doResize", _.throttle(function (){
    alert(window.innerWidth);

    $scope.$apply(function(){
        //do something to update current scope based on the new innerWidth and let angular update the view.
    });
},100));

取消功能:

$(window).on("resize.doResize", _.debounce(function (){
     alert(window.innerWidth);

     $scope.$apply(function(){
         //do something to update current scope based on the new innerWidth and let angular update the view.
     });
},100));

节流和反跳功能之间的区别

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

窗口innerWidth大小更改

来自分类Dev

窗口更改时如何触发事件?

来自分类Dev

窗口更改时如何触发事件?

来自分类Dev

窗口大小更改时,div重叠

来自分类Dev

窗口大小更改时调整标题大小

来自分类Dev

窗口大小更改时,简单的模态自动调整大小

来自分类Dev

列表更改时的事件

来自分类Dev

窗口大小更改时的2dimple.js / d3.js自动大小图表

来自分类Dev

IndexedDb更改时触发事件?

来自分类Dev

上传列表更改时的事件

来自分类Dev

字段更改时捕获事件

来自分类Dev

在 url 更改时加载事件

来自分类Dev

在事件更改时禁用按键事件

来自分类Dev

表单验证弹出窗口消息仅在Angularjs中进行更改时才有效

来自分类Dev

图像src更改时的jQuery更改事件

来自分类Dev

当IsExpanded更改时,WPF更改控件大小

来自分类Dev

在窗口更改时执行脚本

来自分类Dev

AngularJS在URL更改时更改类名称

来自分类Dev

AngularJS在URL更改时更改类名称

来自分类Dev

AngularJS根据页面innerWidth更改正文宽度

来自分类Dev

哈希位置更改时如何触发事件

来自分类Dev

img src更改时触发事件

来自分类Dev

val()更改时的JS触发事件

来自分类Dev

属性更改时的UserControl火灾事件

来自分类Dev

标签文本更改时如何触发事件

来自分类Dev

在事件更改时更新变量jquery

来自分类Dev

z顺序更改时Winform控制事件

来自分类Dev

val()更改时的JS触发事件

来自分类Dev

img src更改时触发事件