我正在创建一个指令,其中我需要三个值 -
scrollHeight属性
projectModule.directive('scroller', function ($window) {
return {
restrict: 'A',
link: function (scope, elem, attrs) {
var rawElement = angular.element($window);
angular.element($window).bind('scroll', function () {
var scrollTop = rawElement.scrollTop();
var offsetHeight = rawElement.offsetHeight;
var scrollHeight = rawElement.scrollHeight;
console.log(scrollTop + " ," + offsetHeight + " ," + scrollHeight);
scope.$apply();
});
};
});
我可以使用rawElement.scrollTop()函数直接获取scrollTop,但是如何获取该元素的offsetHeight和scrollHeight?
我想应用那个逻辑 -
if ((rawElement.scrollTop + rawElement.offsetHeight + 5) >= rawElement.scrollHeight) {
scope.$apply(); //For infinite scrolling
}
提前致谢。
答案 0 :(得分:3)
我会尝试使用$document
服务,因为您确实需要document.body.scrollHeight
和document.body.offsetHeight
。所以
var offsetHeight = $document[0].body.offsetHeight;
var scrollHeight = $document[0].body.scrollHeight;
答案 1 :(得分:1)
如果$ el是实际的DOM元素,你可以使用getBoundingClientRect吗?
var top = $el.getBoundingClientRect().top;
您也可以尝试使用
$el.prop('offsetTop')