Angulaire obtenir décalage de l'élément par son id

J'ai essayer de mettre la barre de navigation li objet actif quand je suis actuellement regarder la section correspondante.
En d'autres termes: Lorsque vous faites défiler ma page (une seule page avec plusieurs sections), la section je suis en train d'observer doit être mis en surbrillance dans la barre de navigation.

J'ai déjà la position de défilement via la directive. Où je ne déclencher ng classe sur le .nav ul li.

<li class="" ng-class="{'active': $parent.scrollPos > document.getElementById('something').offset()}">
   <a class="" ng-click="isCollapsed = true" href="#something" du-smooth-scroll>Something</a>
</li>

Je ne fait aucune différence quand j'utilise

ng-class="{'active': $parent.scrollPos > angular.element('#something').offset()}"

Comment puis-je obtenir la distance à partir d'un document-dessus de n'importe quel élément?

Merci beaucoup.

PS: j'utilise jQuery (pas lite)!

MODIFIER
Comment ça marche (Merci à @Sharikov Vladislav):
Sur le corps j'utilise le "PageCtrl":

<body id="page-top" class="index bg-default" ng-app="previewApp" ng-controller="PageCtrl">

qui ressemble à ça:

angular.module('previewApp')
  .controller('PageCtrl', function($scope, $element) {
    $scope.scrollPos = 0;
    $scope.getOffset = function (elementId) {
      var element = $element.find(elementId);      
      return element.offset().top;
    };
  });

À droite après le corps, j'utilise une durée de

<span scroll-position="scrollPos"></span>

pour initialiser mon "scrollPosition"de la directive, ce qui me permet d'accéder à la position de défilement sur le $scope.scrollPos dans PageCtrl.
Directive:

angular.module('previewApp')
  .directive('scrollPosition', function ($window) {
    return {
      scope: {
        scrollPos: "=scrollPosition"
      },
      link: function (scope, element, attrs) {
        var windowElement = angular.element($window);
        var handler = function () {
          scope.scrollPos = windowElement.scrollTop();
        }
        windowElement.on('scroll', scope.$apply.bind(scope, handler));
        handler();
      }
    };
  });

Dans mon .nav ul li ressemble à la suivante. "- 150" est plus précis mettant en évidence.

<div class="navbar-collapse" uib-collapse="isCollapsed" id="menu-center">
   <ul class="nav navbar-nav navbar-right">
       <li class="hidden">
           <a href="#page-top"></a>
       </li>
       <li ng-class="{'active': $parent.scrollPos > $parent.getOffset('#section1') - 150 && $parent.scrollPos < $parent.getOffset('#section2') - 150}">
         <a ng-click="isCollapsed = true" href="#section1" du-smooth-scroll>Section1</a>
       </li>
       <li ng-class="{'active': $parent.scrollPos > $parent.getOffset('#section2') - 150 && $parent.scrollPos < $parent.getOffset('#section3')}">
         <a ng-click="isCollapsed = true" href="#section2" du-smooth-scroll>Section2</a>
       </li>                 
    </ul>
</div>

J'espère que cela aide quelqu'un qui est en difficulté sur le même problème que moi. Accueille

j'espère que l'aide de ce lien stackoverflow.com/questions/18953144/...

OriginalL'auteur Ore | 2015-11-23