我正在尝试在角度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但它不起作用它只打开试用页
答案 0 :(得分:1)
在e.preventDefault();
中,您似乎缺少任何定义为e
的内容。
您可以在处理preventDefault()
等事件时使用$stateChangeStart
,但我认为resolve
内无此功能。
请参阅Angular ui-router $state.go is not redirecting inside resolve以获取有关如何处理此问题的一些建议(在$stateChangeStart
的处理程序内进行检查,或发送事件以触发转换,或使用超时来延迟状态更改,直到在第一个完成之后)。