2016-04-28 64 views
0

我正在用angular-ui-router構建一個AngularJS應用程序來處理我的路由。是否可以將登錄功能及其模板與ng-view指令分開?

我想知道是否有可能從ng-view指令完全分離登錄功能和它的模板,所以我的佈局的其餘部分沒有顯示在用戶進行身份驗證之前。

這是當前設置: 1]

如何做到這一點任何想法?

提前致謝!

回答

0

呀使用UI的路由器申報創建一個不同的狀態是這樣的:

.state('login', { 
      url: '/login', 
      controller: 'LoginController', 
      templateUrl: 'app/views/login.html', 
      }) 
.state('stateNameIfLoggedIn', { 
      url: '/dashboard', 
      controller: 'DifferentController', 
      templateUrl: 'app/views/differentTemplate.html', 
      userLoggedIn: true 
      }) 

在你LoginController檢查,如果用戶當前登錄重定向他不同的狀態是這樣的:

//controller code starts 
if(userLoggedIn === true){ 
    $state.go('stateNameIfLoggedIn') 
} 
+0

我在我的app.routes中有配置,但是這不會與ng-view中的登錄模板分離。在登錄狀態下,您仍然可以看到整個佈局。 – Mortenkp25

+0

使用Ui路由器,您需要使用ui-view指令而不是ng-view指令來創建嵌套狀態。 –

0

的在使用模板+控制器顯示路線之前,您可以使用routeProvier來檢查某些內容,然後控制路線。

'use strict' 

intranet 
.config ($routeProvider) -> 
    $routeProvider 
    .when '/page1', 
     templateUrl: 'views/page1.html' 
     controller: 'Page1Ctrl' 
    .when '/page2', 
     templateUrl: 'views/page2.html' 
     controller: 'Page2Ctrl' 
    .otherwise 
     redirectTo: '/' 
.run ($rootScope,Token,$location) -> 
    $rootScope.$on '$locationChangeStart', -> 
    Token.check() 
    $rootScope.active_menu = $location.path() 

我的令牌提供程序檢查令牌。

'use strict' 
intranet 
.provider 'Token', -> 
    @$get = ($location,$http,$q,$rootScope) -> 
    check:()-> 
     if localStorage['access_token'] 
     $rootScope.loginMade = true 
     else 
     $rootScope.loginMade = false 
     $location.path '/login' 

而這就是我的索引顯示或不是內容。

<header-app></header-app> 
    <sidebar-app></sidebar-app> 
    <!-- Add your site or application content here --> 
     <div ng-view="" class="container" ng-class="{container_login : loginMade == false}"> 
     </div> 
     <footer-app></footer-app> 
相關問題