Angular does not automatically scroll at the top when loading a new view, it just keeps the current scroll position.
Here is the workaround I am using:
myApp.run(function($rootScope, $window) { $rootScope.$on('$routeChangeSuccess', function () { var interval = setInterval(function(){ if (document.readyState == 'complete') { $window.scrollTo(0, 0); clearInterval(interval); } }, 200); }); });
Put it in your bootstrap (commonly called app.js).
This is a pure javascript solution (it is always best not to use jQuery if it's easy).
Explanation: the script checks every 200 ms if the new DOM is fully loaded, and then scrolls up and stops checking. I tried 200 ms without this loop, and sometimes it did not scroll, because the page simply did not display completely.
source share