ユーザーの役割が変更されるたびにメニューをリロードする必要がある状況がアプリケーション内にあります(1人のユーザーが複数の企業で役割を果たすことがあります)。
私はこの問題にアプローチする最善の方法を知りました。
は、現在、私は次のことをやっている:役割がロードを完了したら
app.controller('menuLoadingCtrl', function($location, $scope, authService){
$scope.model.initialRole = authService.getRole();
$scope.$watch(function(){return authService.getRole()}, function(val){
if(val && val != $scope.model.initialRole){
$scope.layout.menuSrc = 'partials/menu.html';
}
});
})
シンプル
は背面メニュービューへ、そしてそこから、メニューのロードビューにユーザーをリダイレクトします。 私は、この機能に包まれています:私はどのシナリオで呼び出す
$scope.layout.reloadMenu = function(){
$scope.layout.menuSrc = 'partials/menuLoading.html';
}
はで私がメニューをリロードしたいと思います。
$ rootScopeのサービスからこのイベントをブロードキャストし、コントローラでそれを聴くことで、このプロセスをより自動化できるかどうか疑問に思っていました。
これについてのご意見やアドバイスをいただければ幸いです。
+1明確で簡潔です。私はちょうどそのOPのコードは、最初の場所でコントローラで '$ウォッチ'または '$放送'を持ってはいけないことを追加したいと思います - むしろOPは角度サービスまたはより良いまだ '$ q'で' authService'をラップする必要があります約束する。 –
すぐにお返事ありがとうございます。 私はそれが正しい道だと思うが、唯一の問題は、コードを大量にしてメンテナンスを増やすためにメニューをリロードするたびに特定の関数を呼び出す必要があるということだけだ。 サービスレベルの汚れチェックを行い、均一性をブロードキャストすると自動的にこの処理が行われますが、サーバーへの要求が解決されている間はローダーを表示することはできません。 –
また、ログインタイプ/ログアウトなど、ロールタイプを同期して設定する場合のコントローラのフラグを設定する必要があります。 –