Angular Unknown Provider - $ anchorScrollProvider

时间:2017-06-01 19:20:23

标签: angularjs dependency-injection

我可能在这里遗漏了一些明显的东西,但我没有想法,所以:

我有以下代码:

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是基本模块的一部分,对我来说这意味着上面应该有效,但为什么不呢?

1 个答案:

答案 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);
        });
});