Javascript 如何在AngularJS中获得离视、滚动高度

Javascript 如何在AngularJS中获得离视、滚动高度,javascript,angularjs,Javascript,Angularjs,我正在创建一个指令,其中需要三个值- 卷轴 越界 卷轴高度 projectModule.directive('scroller', function ($window) { return { restrict: 'A', link: function (scope, elem, attrs) { var rawElement = angular.element($window); angular.element($window).bind('scroll', function (

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

  • 卷轴
  • 越界
  • 卷轴高度

    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
    }
    

    提前感谢。

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

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

    您也可以尝试使用

    $el.prop('offsetTop')
    

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

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