我可能在这里遗漏了一些明显的东西,但我没有想法,所以:
我有以下代码:
app.run(function ($rootScope, $location, $anchorScroll, $stateParams, $timeout, $anchorScrollProvider) {
$rootScope.$on('$stateChangeStart',
function(newRoute, oldRoute) {
$timeout(function () {
$anchorScrollProvider.disableAutoScrolling();
$location.hash($stateParams.scrollTo);
$anchorScroll();
},
100);
});
});
我今天添加了$ anchorScrollProvider代码,我收到以下错误:
Error: [$injector:unpr] Unknown provider: anchorScrollProviderProvider <- anchorScrollProvider
阅读文档,看起来$ anchorScrollProvider是基本模块的一部分,对我来说这意味着上面应该有效,但为什么不呢?
答案 0 :(得分:4)
可以在配置阶段注入anchorScrollProvider以调用disableAutoScrolling函数行为。
anchorScrollProvider是内置ng-modules的一部分。每当$ location.hash()发生变化时,使用$ anchorScrollProvider禁用自动滚动。
某些方法与配置阶段的提供程序有关,应在应用程序配置期间调用。
在配置阶段,提供商已注册但尚未运行。
app.config(function ( $anchorScrollProvider) {
$anchorScrollProvider.disableAutoScrolling();
})
其余代码可以在run方法中完成:
app.run(function ($rootScope, $location, $anchorScroll, $stateParams, $timeout) {
$rootScope.$on('$stateChangeStart',
function(newRoute, oldRoute) {
$timeout(function () {
$location.hash($stateParams.scrollTo);
$anchorScroll();
},
100);
});
});