2016-03-23 4 views
2

J'utilise autoScroll de ui-router pour faire défiler vers le bas jusqu'à un div (ui-view) lorsque la page est chargée/changement de route. Il le fait actuellement. Est-il possible de compenser autoScroll? Je dois laisser 100px au-dessus de l'élément visible pour le menu et je suis confus sur la façon d'accomplir cela.offset ui-router autoScroll

app.directive('scrollTop', function($uiViewScroll) { 

     var linker = function (scope, element, attr, $elm) { 
      $uiViewScroll(element); 
     }; 

     return { 
      restrict: 'A', 
      link: linker 
     } 
    }); 

HTML:

<ui-view [autoscroll="true"]/> 

Répondre

0

autoscroll directive permet de définir le comportement de défilement de la fenêtre du navigateur lorsqu'une vue est rempli.

Par défaut, $ anchorScroll est remplacé par le service de défilement personnalisé de ui-router, $ uiViewScroll. Ce service personnalisé vous permet de faire défiler les éléments de l'ui-vue lorsqu'ils sont remplis lors d'une activation d'état. Essayez de décorer le service $ uiViewScroll par défaut, en remplaçant le comportement par défaut.

app.config(function ($provide) { 
$provide.decorator('$uiViewScroll', function ($delegate) { 
    return function (uiViewElement) { 
     // var top = uiViewElement.getBoundingClientRect().top; 
     // window.scrollTo(0, (top - 30)); 
     // Or some other custom behaviour... 
    }; 
    }); 
}); 

Voir http://corpus.hubwiz.com/2/angularjs/22290570.html