forked from Archives/Athou_commafeed
better detection of scrolling (#62)
This commit is contained in:
@@ -70,9 +70,8 @@ module.directive('onScrollMiddle', function () {
|
|||||||
|
|
||||||
var w = $(window);
|
var w = $(window);
|
||||||
var e = $(element);
|
var e = $(element);
|
||||||
|
var d = $(document);
|
||||||
var direction = 'down';
|
|
||||||
|
|
||||||
var down = function() {
|
var down = function() {
|
||||||
var docTop = w.scrollTop();
|
var docTop = w.scrollTop();
|
||||||
var docMiddle = docTop + w.height() / 2;
|
var docMiddle = docTop + w.height() / 2;
|
||||||
@@ -88,19 +87,23 @@ module.directive('onScrollMiddle', function () {
|
|||||||
return (elemBottom > docMiddle) ? 'below' : 'above';
|
return (elemBottom > docMiddle) ? 'below' : 'above';
|
||||||
};
|
};
|
||||||
|
|
||||||
|
w.data.scrollPosition = d.scrollTop();
|
||||||
|
w.data.scrollDirection = 'down';
|
||||||
if(!w.data.scrollInit){
|
if(!w.data.scrollInit){
|
||||||
$(window).bind('scroll', function(e) {
|
w.bind('scroll', function(e) {
|
||||||
var direction = e.detail > 0 ? 'down' : 'up';
|
var scroll = d.scrollTop();
|
||||||
scope.$apply();
|
w.data.scrollDirection = (scroll - w.data.scrollPosition > 0) ? 'down' : 'up';
|
||||||
|
w.data.scrollPosition = scroll;
|
||||||
|
scope.$apply();
|
||||||
});
|
});
|
||||||
w.data.scrollInit = true;
|
w.data.scrollInit = true;
|
||||||
}
|
}
|
||||||
scope.$watch(down, function(value, oldValue) {
|
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.$eval(attrs.onScrollMiddle);
|
||||||
});
|
});
|
||||||
scope.$watch(up, function(value, oldValue) {
|
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);
|
scope.$eval(attrs.onScrollMiddle);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user