$ window.scrollY,window.scrollY和window.pageYOffset在angularjs

时间:2017-06-15 07:25:44

标签: javascript angularjs dom angular-material

我尝试了所有我知道的可能性以及我在Stackoverflow中找到的window.scrollY值,它总是给我“0”,甚至与window.scrollX相同。拜托,有人可以告诉我我做错了吗?

我尝试了$window.scrollY$document[0].documentElement.scrollTop$document[0].documentElement.scrollLeft$window.pageYOffsetangular.element($window)没有任何对我有用。

这是我的代码段(有角度的方式)

以下代码

  1. topOfNav工作得很好
  2. fixNav正在触发滚动事件
  3. eventListener工作得很好
  4. window.scrollY 无法正常工作,我总是为零。

    $timeout(function () {
       var nav = angular.element($document[0].querySelector("#main"));
    
        // getting this offsetTop value
           var topOfNav = nav.prop('offsetTop');
    
           var fixNav = function () {
           console.log(topOfNav, $window.scrollY);
          };
    
      // this is working great, it is listening to scroll event 
         $window.addEventListener('scroll', fixNav, true); 
     });
    
  5. 为了测试我尝试创建简单的HTML文件,并在<script></script>标记中添加了此代码段( javascript way ),但它工作得很好。

    这里是代码(像冠军一样工作)

    <script>
      const nav = document.querySelector('#main');
      const topOfNav = nav.offsetTop;
      function fixNav() {
         console.log(topOfNav, window.scrollY);
     }
    
     window.addEventListener('scroll', fixNav);
     </script>
    

    其他信息:

    • AngularJS版本:1.6.2
    • 浏览器类型:chrome
    • 浏览器版本:版本55.0.2883.87(64位)
    • 操作系统:Ubuntu 14.04 LTS

    谢谢。

    <击> 修改

    <击>

    Angular Material Version:1.x.x

    <击>   

    在挖掘太多(更新软件包,卸载和重新安装软件包)后,我找到的一件事是 Angular-Material是阻止程序。   我尝试了其他角度项目,我找到的唯一阻挡剂是 Angular Material

2 个答案:

答案 0 :(得分:3)

某处从中删除样式高度:100%,上面的代码对我有用

答案 1 :(得分:0)

以下对我有用:

html, body { height: auto }