Я подобное делал и решил login вообще отдельно вывести(т.е. без роутинга ангуляровского),но у себя делал так например
ui-view="MainContentViev" если при login-e грузить его данные, а при остальных-соответственно их данные.
.state('training', {
url: '/training',
views: {
'MainContentViev': {
templateUrl: 'static/templates/training.html'
}
}
})
Есть index файл,который запрашивается с сервера-там подключение всех скриптов(ангуляра,роутинга и т.д.) и стилей, но данных-нет. Там пишу только в разметке ui-view="MainContentViev". Когда ui-роутинг видит, например '/training' он грузит в MainContentViev данные (1 раз-потом кеширует) по указанному пути. И ещё- не забудьте написать после роутинга
$locationProvider.html5Mode({
enabled: true,
requireBase: false
});
И вставьте ещё $locationProvider здесь routeConfig($stateProvider, $urlRouterProvider,$locationProvider)
Ещё нюанс. Вы здесь создаёте много урлов, например /training , /exam ,/login , но сервер то их будет понимать по разному. Я это обошёл так- в сервере на все указанные адреса прописал вывод одного и того-же индексного файла, а о н уж потом разбирается и оформляет всё-таким образом-даже при перезагрузке страницы-будет восстановлено состояние из роутинга.
Впринципи и всё...