This ember-cli addon provides two route mixins that will handle scroll preservation and resetting. Read more for details.
https://www.youtube.com/embed/cA9gUspn6gc
(Recommended listening; please mentally replace the word 'smooth' with 'scroll'.)
This will save the scrolling position of a route. When the route is re-entered, it will automatically scroll to the previously saved position only if accessed by the browser's forward and back buttons. Accessing the route via link-to or address bar will not trigger this behavior. This is by design in order to more closely emulate the HTML experience.
importScrollOperatorMixinfrom'ember-scroll-operator/mixins/scroll-operator';exportdefaultEmber.Route.extend(ScrollOperatorMixin,{// If any of the following methods are implemented in your route, be sure to// include a call to the parent to make sure the mixin is included.activate(){this._super(...arguments);// existing code},deactivate(){this._super(...arguments);// existing code},beforeModel(){this._super(...arguments);// existing code},setupController(){this._super(...arguments);// existing code},});A simple mixin to ensure that a route is always scrolled to the top when accessed.
importResetScrollMixinfrom'ember-scroll-operator/mixins/reset-scroll';exportdefaultEmber.Route.extend(ResetScrollMixin,{// If the following methods are implemented in your route, be sure to include// a call to the parent to make sure the mixin is included.activate(){this._super(...arguments);// existing code},});git clonethis repositorynpm installbower install
ember server- Visit your app at http://localhost:4200.
npm test(Runsember try:testallto test your addon against multiple Ember versions)ember testember test --server
ember build
For more information on using ember-cli, visit http://www.ember-cli.com/.
Thanks to @gdub22 for their insight on determining when transitions are triggered by the browser's back/forward buttons (related).