2015-08-05 1 views
0

Ceci est ma directive actuelle, que je trouve que la deuxième réponse à la question suivante - ScrollTo function in AngularJS:AngularJS/JQuery: faire défiler de l'emplacement actuel à l'élément

.directive('scrollToItem', function($timeout) {              
    return {                     
     restrict: 'A',                  
     scope: {                    
      scrollTo: "@"                  
     },                     
     link: function(scope, $elm,attr) {             

      $elm.on('click', function() {              
       $('html,body').animate({scrollTop: $(scope.scrollTo).offset().top }, "slow"); 
      });                    
     }                      
    }}) 

Le code ci-dessus peut être utilisé comme ceci:

<a id="top-scroll" name="top"></a> 
<div class="back-to-top" scroll-to-item scroll-to="#top-scroll"> 

Le problème est que la page défile rapidement et s'anime par le haut. Existe-t-il une méthode recommandée pour faire défiler l'emplacement actuel vers la position souhaitée?

Répondre

0

Une solution serait de changer

$elm.on('click', function() {              
       $('html,body').animate({scrollTop: $(scope.scrollTo).offset().top }, "slow"); 
      }); 

à

$elm.on('click', function(e) {              
    e.preventDefault(); 
    $('html,body').animate({scrollTop: $(scope.scrollTo).offset().top }, "slow"); 
});  

que je trouve ici: jQuery flicker when using animate-scrollTo

Je vais attendre et voir s'il y a une meilleure solution. Sinon, je vais juste marquer celui-ci comme la solution correcte.