2016-01-12 3 views
0

Я новичок в написании OO JavaScript. Я пытаюсь сделать это только ради обучения. Моя проблема в том, что я определил службу с конструктором, но она запускается только один раз.Значение в конструкторе не изменяется

Вот код:

Const приложение = angular.module ('приложение', []);

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

во втором инстанцировании 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()); 
}); 
Смежные вопросы