我的应用程序的登录页面具有两种状态:home-publichome-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

10-05 20:34
查看更多