我的应用程序的登录页面具有两种状态:home-public
,home-logged-in
。现在,我想在同一URL上显示这两种状态,但让 Controller 和模板取决于用户 session (用户是否登录?)。
有没有办法做到这一点?
最佳答案
您可以有一个基本状态来控制要加载的状态,并且可以简单地让声明该基本状态的子级没有url:
.state('home', {
url: "/home",
templateUrl: "....",
controller: function($scope,$state,authSvc) {
if(authSvc.userIsLoggedIn()){
$state.go('home.loggedin')
}else{
$state.go('home.public')
}
}
})
.state('home.public', {
url: "",
templateUrl: "....",
controller: function($scope) {
...........
}
})
.state('home.loggedin', {
url: "",
templateUrl: "....",
controller: function($scope) {
...........
}
})
现在,在基本状态的 Controller (
home
)中,您可以检查用户是否登录,并使用$state.go()
加载适当的状态。编辑
如所 promise 的,a working plunk。