2017-09-28 2 views
0

私はangularjsにアクセス権ベースのアクセス制御アプリケーションを構築しています。 $ transitionChangeStartの 'next'パラメータに相当する$ transitionのパラメータが必要です。

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; 
      } 

にアクセスする権限を持っているかどうかを確認する定義されたサービスを提供しています。 $ transition()は$ routeChangeStart( 'next')の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

を読んでお勧めします