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在你发表评论之前,我尝试过这个,并且成功了!我会把答案贴出来。谢谢!!