如何在AngularJS中获取offsetHeight,scrollHeight

时间:2014-10-15 06:24:04

标签: javascript angularjs

我正在创建一个指令,其中我需要三个值 -

  1. scrollTop的
  2. 的offsetHeight
  3. 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();
            });
        };
    });
    
  4. 我可以使用rawElement.scrollTop()函数直接获取scrollTop,但是如何获取该元素的offsetHeight和scrollHeight?

    我想应用那个逻辑 -

    if ((rawElement.scrollTop + rawElement.offsetHeight + 5) >= rawElement.scrollHeight) {
        scope.$apply();    //For infinite scrolling
    }
    

    提前致谢。

2 个答案:

答案 0 :(得分:3)

我会尝试使用$document服务,因为您确实需要document.body.scrollHeightdocument.body.offsetHeight。所以

var offsetHeight = $document[0].body.offsetHeight;
var scrollHeight = $document[0].body.scrollHeight;

答案 1 :(得分:1)

如果$ el是实际的DOM元素,你可以使用getBoundingClientRect吗?

var top = $el.getBoundingClientRect().top;

JSFiddle

您也可以尝试使用

$el.prop('offsetTop')