You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
52 lines
1.5 KiB
52 lines
1.5 KiB
/**
|
|
* @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);
|