如果找不到param,如何重定向到root? Angular ui-router

时间:2016-02-25 22:20:15

标签: angularjs routing routes angular-ui-router angular-meteor

我有以下路线,使用Angular ui-router。

如果我导航到/3872,这会为我提供具有该ID和正确模板的用户,那就太棒了。

但问题是,如果我输入一个不存在的ID,例如/1111我想重定向到root。目前它停留在user路线上,而是给我一个空模板。

$stateProvider
  .state('root', {
    url: '/',
    templateUrl: 'home.html',
    controller: 'home_controller'
  })
  .state('user', {
    url: '/:userId',
    templateUrl: 'user.html',
    controller: 'user_controller'
  });

$urlRouterProvider.otherwise('/');

2 个答案:

答案 0 :(得分:1)

一种方法是使用$stateChangeStart事件进行一些过滤。这进入了app.run(...)部分

$rootScope.$on('$stateChangeStart', function (event, toState, toParams, fromState, fromParams) {

        if (toState.name == "user") {
           //some logic... and most probably 

           //event.preventDefault();
           //$state.go(toState.name, toParams);
        }

    });

答案 1 :(得分:0)

在user_controller($ stateParams,$ state)中:

if($stateParams.userId not in userIds) {
  $state.go('root');
}