すべてのユーザーがログインする前に利用できるいくつかの基本的なルートを構成しました。
App.config(function ($routeProvider) {
$routeProvider.
when('/login', { templateUrl: 'views/login.html', controller: PageStartCtrl.Controller }).
otherwise({ redirectTo: '/login' });
});
したがって、ユーザーができることはログインすることだけです。ユーザーがログインした後、次のような追加のルートを登録したいと思います:
$http
.post('api/Users/Login', { User: userName, Password: userPassword })
.success(function (response : any) {
App.config(function ($routeProvider) {
$routeProvider
.when('/dashboard',
{ templateUrl: 'part/dashboard.html',
controller: DashboardCtrl.Controller });
});
ただし、$routeProvider は /login ルートについて何も知らない新しいインスタンスであるため、.config メソッドは 1 回だけ呼び出す必要があると思います。さらにデバッグすると、ビューの変更を解決するときに $resourceProvider の最初のインスタンスが使用されることがわかりました。
Q: 後でルートを登録する方法はありますか?
ルートとテンプレートを動的に $routeProvider に追加する の解決策は機能する可能性がありますが、非常に醜いです (関連するグローバル変数nastyGlobalReferenceToRouteProvider
)。