【发布时间】:2017-06-15 07:25:43
【问题描述】:
我尝试了我知道的所有可能性,并且我在 Stackoverflow 中找到了这些可能性来获得 window.scrollY 值,它总是给我“0”,即使与 window.scrollX 相同。请,有人可以建议我做错了什么吗?
我试过$window.scrollY、$document[0].documentElement.scrollTop、$document[0].documentElement.scrollLeft、$window.pageYOffset、angular.element($window) 没有任何效果。
这是我的代码 sn-p(角度方式)
在下面的代码中
- topOfNav 运行良好
- fixNav 正在触发滚动事件
- eventListener 运行良好
-
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); });
为了测试,我尝试创建简单的 HTML 文件并在 <script></script> 标签中添加了这个 sn-p (javascript 方式),效果很好。
这里是代码(像冠军一样工作)
<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 材质版本:1.x.x
在挖掘了太多(更新包、卸载和重新安装包)之后,我发现Angular-Material is the Blocker。 我也尝试过其他 Angular 项目,我发现的唯一障碍是 Angular Material
【问题讨论】:
标签: javascript angularjs dom angular-material