我是编写OO JavaScript的新手。我只是为了学习而试图做这个。我的问题是,我用构造函数定义了一个服务,但它只运行一次。
以下是代码:
const app = angular.module(' app',[]);
class ViewportChecker {
constructor() {
this.scrollTop = window.pageYOffset;
}
}
app.directive('sectionModule', ($window) => {
return {
link(scope, el) {
const service = new ViewportChecker,
win = angular.element($window);
win.on('scroll', () => {
console.log(service.scrollTop);
});
}
};
});
我只在控制台中获得0
。我做错了什么?
答案 0 :(得分:1)
在第二个实例化ViewportChecker变量 window.pageYOfsset可能为0(因为你还没有滚动)
所以当你以后的console.log(service.scrollTop)时,这个变量仍然是0。
你指定this.scrollTop = 0这样说,因此service.scrollTop将来总是0。
你可以做的是例如
constructor() {
this.getScrollTop = function () { return window.pageYOffset; }
}
和
win.on('scroll', () => {
console.log(service.getScrollTop());
});