2015-06-15 2 views
0

В моем AngularJS применения в перспективе() функцией я хочу, чтобы отправить пользователь зарегистрировался страница, если они не вошли в системе Вот код:.

.run(['$state', function($state) 
{ 
    $state.go('signin') 
     .then(function(promise){}, 
      function(reject) 
      { 
       console.log(reject) 
      } 
     ); 
}]); 

В консоли я получаю следующее :

Error: transition superseded {stack: (...), message: "transition superseded"} 

Ни $state.transitionTo('signin') не работает. У кого-нибудь есть идея, почему это происходит, я никогда не сталкивался с этим.

ответ

1

Я думаю, вы должны быть проверки подлинности в $stateProvider вместо от run(). Вы могли бы сделать что-то вроде этого, вместо:

$stateProvider 
    .state('auth', { 
    abstract: true, 
    resolve: { 
     user: ['auth', '$q', function (auth, $q) { 

     if (auth.isAuthenticated()) { 
      //... 
     } else { 
      //... 
     } 

     }] 
    } 
    }) 
+0

Я согласен, делает более sense.I обычно делает мину с $ часов в моем регуляторе –

+0

Спасибо, я использовал свой пример, а потом я просто слушаю в перспективе() функцию на $ stateChangeError, а затем я меняю вид на signin. –

+0

Рад, что это помогло :) –

0

Я думаю, ваша проблема может быть, что государство все еще не загружен, так что вы не можете пойти в это состояние ...

решение было бы установить тайм-аут 0, так что работает это после того, как стек пуст.

попробовать это:

.run($timeout, $state, ...) { 

$timeout(function() { 
    $state.go('signin'); 
},0); 

или что-то подобное

referanced от:

module.run() and $state.go() angularJS