如何在角度UI-Router中正确重定向

时间:2016-04-13 11:02:07

标签: angularjs angular-ui-router

我正在尝试在角度ui-router中使用resolve和条件路由,但它似乎无法正常工作

App.js:

app.config(function($stateProvider, $urlRouterProvider) {
  $stateProvider

    .state('app', {
    url: '/app',
    abstract: true,
    templateUrl: 'templates/home.html'
  })


  .state('app.login', {
    url: '/login',
    views: {
      'menuContent': {
        templateUrl: 'templates/login.html'
      }
    }
  })

  .state('app.therapist', {
    url: '/therapist',
    views: {
      'menuContent': {
        templateUrl: 'templates/therapist.html'
      }
    }


  }).state('app.trial', {
    url: '/trial',
    views: {
      'menuContent': {
        templateUrl: 'templates/trial.html'
      }
    },
    resolve:{
      check:function($state){
        if(1==1){
           e.preventDefault();
          $state.go('app.login',{}) ;  /**/Here trying**
        }else{
          return true;
        }
      }
    }
$urlRouterProvider.otherwise('/app/therapist');

  });

所以在app.trail路线中,我正在测试并尝试重定向到app.login但它不起作用它只打开试用页

1 个答案:

答案 0 :(得分:1)

e.preventDefault();中,您似乎缺少任何定义为e的内容。

您可以在处理preventDefault()等事件时使用$stateChangeStart,但我认为resolve内无此功能。

请参阅Angular ui-router $state.go is not redirecting inside resolve以获取有关如何处理此问题的一些建议(在$stateChangeStart的处理程序内进行检查,或发送事件以触发转换,或使用超时来延迟状态更改,直到在第一个完成之后)。