如果用户更改了网址,则会呈现错误的视图

时间:2016-03-28 18:05:08

标签: javascript angularjs angular-ui-router

我有一个状态更改回调,它会重定向到相同的状态。

  $rootScope.$on('$stateChangeStart', function(event, toState, toStateParams) {        
    if (toState.name != 'wsConnect') {
        console.log("change path!!");
        $location.path('/connect');                  

    }
  });

当用户打开新标签并输入包含任何网址锚点的路径时,它可以正常工作。用户从回调中看到视图,但是 如果用户手动更改锚点,则点击进入 回调工作在一半 - 锚点值被恢复,但用户看到的路线不是来自锚点。

如果你重新加载页面" bug"消失。

我找到了解决方法:

    if (toState.name != 'wsConnect') {
        console.log("change path!!");
        $interval(function () {
          $state.go('wsConnect');
          $location.path('/connect');
        }, 1, 1);
    }

1 个答案:

答案 0 :(得分:1)

也许考虑使用 $viewContentLoading在呈现DOM之前,在视图开始加载时触发。 '$ rootScope'广播事件。

https://github.com/angular-ui/ui-router/wiki#view-load-events