我有以下路线,使用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('/');
答案 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');
}