Como adiar a definição de rotas em Angular.js?
Eu configurei algumas rotas básicas que estão disponíveis para todos os usuários antes que eles efetuem login:
App.config(function ($routeProvider) {
$routeProvider.
when('/login', { templateUrl: 'views/login.html', controller: PageStartCtrl.Controller }).
otherwise({ redirectTo: '/login' });
});
Portanto, a única coisa que o usuário pode fazer é efetuar o login. Após o login do usuário, eu gostaria de registrar rotas adicionais como esta:
$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 });
});
No entanto, suponho que eu deva chamar o método .config apenas uma vez, porque o $ routeProvider é uma instância nova que não sabe nada sobre a rota / login. Depuração adicional mostrou-me que a primeira instância de $ resourceProvider é usada ao resolver a alteração da exibição.
Q: Existe uma maneira de registrar rotas mais tarde?
Solução deAdicione rotas e modelos dinamicamente a $ routeProvider pode funcionar, mas é bastante feio (variável global envolvidanastyGlobalReferenceToRouteProvider
).