From 4aeb0e56eed7137e3acf7309162a8659be424b19 Mon Sep 17 00:00:00 2001 From: Athou Date: Mon, 6 May 2013 11:22:43 +0200 Subject: [PATCH] better detection of scrolling (#62) --- src/main/webapp/js/directives.js | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/main/webapp/js/directives.js b/src/main/webapp/js/directives.js index b4a4fdc9..842816a3 100644 --- a/src/main/webapp/js/directives.js +++ b/src/main/webapp/js/directives.js @@ -70,9 +70,8 @@ module.directive('onScrollMiddle', function () { var w = $(window); var e = $(element); - - var direction = 'down'; - + var d = $(document); + var down = function() { var docTop = w.scrollTop(); var docMiddle = docTop + w.height() / 2; @@ -88,19 +87,23 @@ module.directive('onScrollMiddle', function () { return (elemBottom > docMiddle) ? 'below' : 'above'; }; + w.data.scrollPosition = d.scrollTop(); + w.data.scrollDirection = 'down'; if(!w.data.scrollInit){ - $(window).bind('scroll', function(e) { - var direction = e.detail > 0 ? 'down' : 'up'; - scope.$apply(); + w.bind('scroll', function(e) { + var scroll = d.scrollTop(); + w.data.scrollDirection = (scroll - w.data.scrollPosition > 0) ? 'down' : 'up'; + w.data.scrollPosition = scroll; + scope.$apply(); }); w.data.scrollInit = true; } scope.$watch(down, function(value, oldValue) { - if(direction == 'down' && value && oldValue && value != oldValue) + if(w.data.scrollDirection == 'down' && value && oldValue && value != oldValue) scope.$eval(attrs.onScrollMiddle); }); scope.$watch(up, function(value, oldValue) { - if(direction == 'up' && value && oldValue && value != oldValue) + if(w.data.scrollDirection == 'up' && value && oldValue && value != oldValue) scope.$eval(attrs.onScrollMiddle); }); }