Я установил некоторые базовые маршруты, доступные для всех пользователей, прежде чем они войдут в систему:
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 });
});
Однако, я полагаю, мне нужно вызвать метод .config только один раз, потому что $routeProvider - это новый экземпляр, который ничего не знает о маршруте/логине. Дальнейшая отладка показала мне, что первый экземпляр $resourceProvider используется при изменении разрешения просмотра.
Q: Есть ли способ зарегистрировать маршруты позже?
Решение Добавить маршруты и шаблоны динамически в $routeProvider может работать, но довольно уродливо (задействована глобальная переменная nastyGlobalReferenceToRouteProvider
).