はUI-ルータで次の状態を指定されたオブジェクト:
.state('some.state', {
url: '/some/:viewType',
templateUrl: 'myTemplate.html',
controller: 'SomeStateController',
controllerAs: 'vm',
data: {
authorizedFor: [SOME_ROLE]
}
}
私は認可へのアクセスを制御を助けるために国家のために、「データ」オブジェクトを使用しようとしています状態。これとは別に、$ stateChangeStartイベントを処理してdata.authorizedForを調べ、それに応じて動作します。
ただし、問題は、許可されたロールのリストがviewTypeの値に基づいて変更される可能性があることです。私はデータ:{}を関数にして$ stateParamsを注入し、そのロジックを処理できると思ったが、それはしない。
代わりにparamsオブジェクトを使ってみましたが、$ stateChangeStart時には:viewTypeはまだ$ state.paramsまたは$ stateParamsからアクセスできません。
devツールを実行すると、$ state.transitionTo.argumentsに値が設定されていることがわかりましたが、そのルートに行くのは非常にハッキーです。
params: {
authorizedFor: function($state) {
console.log($state.transitionTo.arguments[1].viewType); // has value I need
}
}
お勧めはありますか?
おかげで、私は完全にコントローラに行く避けるためにしようとしている:
詳細はこちらのページをご覧ください。ユーザーがアクセスできない場合、私はui-routerを新しい状態に移行させたくありません。解決例によるui-route-authenticationに関する –
については、次のリンクを参照してください。http://stackoverflow.com/questions/22537311/angular-ui-router-login-authentication –