Javascript $state更改,但视图不';t-AngularJS
我的状态有以下配置:Javascript $state更改,但视图不';t-AngularJS,javascript,angularjs,angular-ui-bootstrap,angular-ui-router,Javascript,Angularjs,Angular Ui Bootstrap,Angular Ui Router,我的状态有以下配置: $stateProvider .state('login', { url: '/login', templateUrl: 'scripts/login/login.tpl.html', controller: 'LoginController', access: 'public' }) .state('recovery', { url: '/recovery',
$stateProvider
.state('login', {
url: '/login',
templateUrl: 'scripts/login/login.tpl.html',
controller: 'LoginController',
access: 'public'
})
.state('recovery', {
url: '/recovery',
templateUrl: 'scripts/recovery/recovery.tpl.html',
controller: 'RecoveryController',
access: 'public'
})
.state('/', {
url: '/',
templateUrl: 'scripts/home/home.tpl.html',
access: 'private'
});
当状态更改时,我有此事件:
$scope.$on('$stateChangeStart', function (event, toState) {
// redirect to login
if(toState.access === 'private' && !AuthService.isLoggedIn()) {
// User needs to login
console.log('-> need login');
$location.path('/login');
}
}
问题是:
当我进入应用程序时,它在URL和登录视图中显示“/#/login”。
如果我进入url地址并删除“/login”(/#/),然后按enter键,主视图将显示,但在控制台中我可以看到“->需要登录”,url中显示“/#/login”
我不知道发生了什么,但$location.path无法使用登录视图重定向回“/#/login”。我找到了解决问题的方法 我将$location.path切换为$state.go,并在$state.go调用上方添加了event.preventDefault
现在工作得很好!=) 您是否尝试过替换
$location.path('/login')代码>带有$state.go('login')代码>?@Alireza Ahmadi在你发表评论之前,我尝试过这个,并且成功了!我会把答案贴出来。谢谢!!