3
我採用了棱角分明的UI的UI,路由器在我的項目和狀態變化我要檢查,如果用戶訪問該頁面。如果沒有,我彈出一個登錄模式。UI-Router:更改無加載狀態的網址或推遲加載狀態?
$rootScope.$on('$stateChangeStart', function(evt, toState) {
if (!authentication.authorize(toState.data.access)) {
evt.preventDefault();
$state.go('login', {}, {notify: false});
}
});
登錄狀態,使用從UI的自舉一個模式:
angular.module('components.security').config(function($stateProvider) {
$stateProvider.state('login', {
onEnter: function($state, $modal) {
$modal.open({
templateUrl: "/components/security/login.html",
controller: 'LoginCtrl as controller'
});
}
});
});
它的工作完全正常的第一頁加載:與UI視圖不會渲染,登錄模式彈出,並且當用戶登錄時,我呼叫$urlRouter.sync();
並加載視圖。
但是,如果你從一個頁面導航頁這是應該發生:
- 用戶在/ pageA的,點擊一個鏈接到/頁面B(他沒有訪問)
- 網址更改/頁面B
- 沒有加載ui的視圖,而不是在登錄模式彈出
- 後登錄完成模態關閉,用戶界面視圖負載
相反會發生什麼情況是這樣的:
- 用戶在/ pageA的,點擊即可/頁面B的鏈接(這是他沒有獲得)
- 網址保持在/ pageA的
- 登錄模式彈出
- 登錄完成後的模態關閉,但你仍然在頁面A.
所以我很想是,網址實際上變爲/頁面B,但用戶界面視圖沒有按「T直到你調用同步。
我沒有,但聽起來像一個簡單完美的解決方案。謝謝! –