Я использую $ routeChangeStart, чтобы перенаправить авторизованных пользователей на конкретные URL-адреса и не дать пользователям использовать специальные URL-адреса.
Также у меня есть некоторые динамически сгенерированные страницы, которые я хочу посетить на этой странице по страницам. Итак, я вызываю $ routeChangeStart, и в этом случае я звоню в службу $ http, которая получает все пули страниц из базы данных и позволяет пользователю перенаправлять на нее.
Что происходит, когда я добавляю новую страницу из своего бэкэнд и пытаюсь ее просмотреть, страница-slug не извлекает для последней вставленной записи страницы из базы данных, и по умолчанию маршрут взял меня на домашнюю страницу.
Когда я завершу обновление приложения (F5), маршрут будет найден.
Мой образец кода здесь.
Мой маршрут на странице:
$routeProvider.when('/:pageSlug',{ templateUrl:BASE_URL+'singlePage', controller:"pageController"});
Мои $ routeChangeStart:
app.run(function($rootScope, $location, loginService, PageUrlService, $route)
{
var $promise = PageUrlService.getPageUrls();
$rootScope.$on('$routeChangeStart', function(){
var pageRoutes = [],
after = [],
before = [],
right = [],
general = [];
$promise.then(function(res){
var data = res.data;
if(data.status == "found"){
angular.forEach(data.content, function(value, key){
pageRoutes.push("/"+ value.pageUrl);
});
}
if($rootScope.isLoggedIn == true)
{
// route allow if found in "pageRoutes"
}
else
{
// route allow if found in "pageRoutes"
}
});
});
});