在角度切换状态后平滑滚动到元素

时间:2016-07-30 17:32:12

标签: javascript angularjs node.js state smooth-scrolling

我使用节点包在Angular中进行平滑滚动。我的所有网页上都有一个导航栏(作为指示),如果有人在我的历史记录状态function add($name) { $GLOBALS['players'][$name] = array(); $array = &$GLOBALS['players'][$name]; array_push($array, "b"); } ,并点击导航栏中的链接转到主页/history上的特定部分,我希望站点将状态切换到主页状态,然后自动滚动到用户在导航栏中单击的部分。

现在我正在做

/

哪个有效,但我不确定这是否是获得此功能的最自然方式。

我尝试了 scope.goToSection = function (val, state) { $state.go(state) setTimeout(function() {smoothScroll(document.querySelector(val))}, 100); } ,但切换状态后页面不会滚动。是否有更好或更自然的方式来获得此功能?

1 个答案:

答案 0 :(得分:0)

用于切换状态而不是ui-sref的自定义函数的问题在于您丢失了例如用鼠标滚轮单击以在新选项卡等中打开的可能性。

解决这个问题的方法是检查$ stateChangeSuccess事件并根据传递给新状态的数据进行滚动。

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

    });