2016-07-30 77 views
0

我在使用節點包進行平滑滾動的Angular中進行開發。我在我的所有頁面上都有一個導航欄(作爲指令),如果有人處於我的歷史狀態/history並點擊導航欄中的鏈接轉到主頁/上的特定部分,我希望網站將狀態切換爲主頁狀態,然後自動滾動到用戶在導航欄中單擊的部分。以角度切換狀態後順利滾動到元素

現在我做

scope.goToSection = function (val, state) { 
     $state.go(state) 
     setTimeout(function() {smoothScroll(document.querySelector(val))}, 100); 
    } 

這是工作,但我不知道這是否是最自然的方式來獲得這個功能。

我試過$state.go(state).then(smoothScroll(document.querySelector(val)));但切換狀態後頁面不會滾動。有沒有更好或更自然的方式來獲得此功能?

回答

0

自定義函數用來切換狀態,而不是UI-SREF的問題是,你失去例如posibility點擊鼠標滾輪在新標籤頁中打開等

解決這將是檢查$ stateChangeSuccess事件並根據傳遞給新狀態的數據進行滾動。

$rootScope.$on('$stateChangeSuccess', function(e, toState, toParams) { 
     // do the scrolling 

    });