我正在用angular-ui-router構建一個AngularJS應用程序來處理我的路由。是否可以將登錄功能及其模板與ng-view指令分開?
我想知道是否有可能從ng-view指令完全分離登錄功能和它的模板,所以我的佈局的其餘部分沒有顯示在用戶進行身份驗證之前。
這是當前設置:
如何做到這一點任何想法?
提前致謝!
我正在用angular-ui-router構建一個AngularJS應用程序來處理我的路由。是否可以將登錄功能及其模板與ng-view指令分開?
我想知道是否有可能從ng-view指令完全分離登錄功能和它的模板,所以我的佈局的其餘部分沒有顯示在用戶進行身份驗證之前。
這是當前設置:
如何做到這一點任何想法?
提前致謝!
呀使用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')
}
的在使用模板+控制器顯示路線之前,您可以使用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>
我在我的app.routes中有配置,但是這不會與ng-view中的登錄模板分離。在登錄狀態下,您仍然可以看到整個佈局。 – Mortenkp25
使用Ui路由器,您需要使用ui-view指令而不是ng-view指令來創建嵌套狀態。 –