您好,我刚刚开始学习 Angular && Angular-UI-Router,并试图找出如何确定应用程序首次打开的时间,以将用户发送到登录页面或主页。
这是我到目前为止所拥有的:
codeArtApp.config(function($stateProvider, $urlRouterProvider){
$stateProvider
.state('login',{
url : '/login',
templateUrl:'App/scripts/login/loginView.html',
controller: 'loginCtrl'
})
.state('profile', {
url : '/profile',
templateUrl:'App/scripts/login/loginView.html',
controller: 'profileCtrl'
})
.state('404', {
url: '/404',
templateUrl:'App/scripts/views/404.html'
});
$urlRouterProvider.otherwise("404");
});
codeArtApp.run(['$state', '$rootScope', function($state, $rootScope, $log){
$rootScope.$on('$stateChangeStart', function(event, toState, toParams, fromState){
if(fromState.url === '^' && toState.url !== 'login'){
$state.go('login');
}
});
}]);
我在这里假设的是,如果fromState.url
被设定为^
然后应用程序第一次启动。
For some reason this code enters an infinite loop and I gt this stacktrace:
现在据我所知,这是因为事件如果$state.go('login')
得到执行toState.url
总是404.
我曾希望如果$state.go('login')
被处决toState.url
将被设置为登录并且该调用将不再执行。
我可能没有将这个逻辑设置在正确的位置......
谁能告诉我 Angular 中如何实现有条件地显示页面?