| /** |
| * @ngdoc object |
| * @name ui.router.state.$uiViewScrollProvider |
| * |
| * @description |
| * Provider that returns the {@link ui.router.state.$uiViewScroll} service function. |
| */ |
| function $ViewScrollProvider() { |
| |
| var useAnchorScroll = false; |
| |
| /** |
| * @ngdoc function |
| * @name ui.router.state.$uiViewScrollProvider#useAnchorScroll |
| * @methodOf ui.router.state.$uiViewScrollProvider |
| * |
| * @description |
| * Reverts back to using the core [`$anchorScroll`](http://docs.angularjs.org/api/ng.$anchorScroll) service for |
| * scrolling based on the url anchor. |
| */ |
| this.useAnchorScroll = function () { |
| useAnchorScroll = true; |
| }; |
| |
| /** |
| * @ngdoc object |
| * @name ui.router.state.$uiViewScroll |
| * |
| * @requires $anchorScroll |
| * @requires $timeout |
| * |
| * @description |
| * When called with a jqLite element, it scrolls the element into view (after a |
| * `$timeout` so the DOM has time to refresh). |
| * |
| * If you prefer to rely on `$anchorScroll` to scroll the view to the anchor, |
| * this can be enabled by calling {@link ui.router.state.$uiViewScrollProvider#methods_useAnchorScroll `$uiViewScrollProvider.useAnchorScroll()`}. |
| */ |
| this.$get = ['$anchorScroll', '$timeout', function ($anchorScroll, $timeout) { |
| if (useAnchorScroll) { |
| return $anchorScroll; |
| } |
| |
| return function ($element) { |
| return $timeout(function () { |
| $element[0].scrollIntoView(); |
| }, 0, false); |
| }; |
| }]; |
| } |
| |
| angular.module('ui.router.state').provider('$uiViewScroll', $ViewScrollProvider); |