构造函数中的值不会改变

时间:2016-01-12 22:36:42

标签: javascript angularjs

我是编写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。我做错了什么?

1 个答案:

答案 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());
 });