2017-06-01 140 views
1

我可能失去了一些東西很明顯這裏,但我的想法,所以:

我有以下代碼:

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是基礎NG模塊,這對我來說意味着上面應該工作的一部分,但爲什麼不呢?

+0

anchorScrollProvider是在配置部分可用,在運行部分嘗試$ anchorScroll –

回答

3

可以在配置階段注入anchorScrollProvider以調用disableAutoScrolling函數行爲。

anchorScrollProvider是內置的ng模塊的一部分。每當$ 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); 
     }); 
}); 
+0

啊,這是有道理+固定我錯誤,謝謝你的詳細解釋! – RandomUs1r