app.run中$ stateChangeStart中的$ state.go无法正常工作angualrjs

时间:2015-08-08 18:49:14

标签: javascript angularjs

我不能让$ state.go()工作。 $ on(' $ stateChangeStart' ...);工作正常,并在尝试访问无法访问的受保护状态时打印控制台消息。但$ state.go(' toState.name,toParams');不工作。有谁知道如何实现这个目标?

任何帮助表示感谢



app.run(function ($rootScope,$state) {

  $rootScope.$on('$stateChangeStart', function (event, toState, toParams) {
    var requireLogin = toState.data.requireLogin;

  $rootScope.currentUser = true;

    if ($rootScope.currentUser === true && requireLogin === true) {

      console.log(requireLogin);
      console.log($rootScope.currentUser);
      event.preventDefault();
      $state.go(toState.name, toParams);

    } 
else {

      console.log(requireLogin);
      console.log($rootScope.currentUser);
      $state.go('login.signin');

    }


  });

});




1 个答案:

答案 0 :(得分:0)

当应该阻止重定向默认事件处理时,请记住切换到登录将是另一个状态转换。它应该被过滤掉,否则会导致无限循环

{
  if(!toState.name != 'login.signin'){
    console.log(requireLogin);
    console.log($rootScope.currentUser);
    event.preventDefault();
    $state.go('login.signin');
  }
}

$state.go(toState.name, toParams);毫无意义,因为这是默认情况下会发生的事情