2017-09-28 59 views
0

我正在angularjs中構建一個基於權限的訪問控制應用程序。我希望$ transitions中的參數等於$ routeChangeStart中的'next'參數。

function ($rootScope, $state, $transitions, LoginService) { 
     console.log('------------------in app.js run'); 
     $state.go('login'); 
     $transitions.onStart({}, function ($transitions) { 
       var newToState = $transitions.$to(); 
       if(checkPermissionForView(// param similar to next)) 
     }); 

    } 

我有一個服務定義,如果登錄的用戶擁有訪問視圖

checkPermissionForView : function (view) { 
       if (!view.requiresAuthentication) { 
        return true; 
       } 

       return userHasPermissionForView(view); 
      } 

    userHasPermissionForView : function(view){ 
       if(!isLoggedIn()){ 
        return false; 
       } 
      } 

    isLoggedIn : function() { 
       var user = JSON.parse(localStorage.getItem("user")); 
       console.log(user); 
       return user != null; 
      } 

正如你可以看到我想通過「下一個」信息服務許可,檢查。 $是否轉換。$ to()會在$ routeChangeStart('next')中產生與下一個相同的結果? 我對此很陌生。 TIA

回答

0

是的,使用Transition.to()來獲得將被激活的狀態。

查看docs for the Transition class瞭解更多詳情。

function ($rootScope, $state, $transitions, LoginService) { 
     console.log('------------------in app.js run'); 
     $state.go('login'); 
     $transitions.onStart({}, function (transition) { 
       var newToState = transition.to(); 
       if(!checkPermissionForView(newToState)) { 
         return $state.target('login'); 
       } 
     }); 
} 

...

checkPermissionForView : function (state) { 
       if (!state.requiresAuthentication) { 
        return true; 
       } 

       return userHasPermissionForState(state); 
      } 

    userHasPermissionForState : function(view){ 
       if(!isLoggedIn()){ 
        return false; 
       } 
      } 

    isLoggedIn : function() { 
       var user = JSON.parse(localStorage.getItem("user")); 
       console.log(user); 
       return user != null; 
      } 

我強烈建議你閱讀的Transition Hooks Guide

相關問題