53 lines
1.5 KiB
JavaScript
53 lines
1.5 KiB
JavaScript
/**
|
|
* @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);
|