2015-09-01 4 views
0

Я использую $ 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" 
      } 
     }); 
    }); 
}); 

ответ

1

app.run называется один раз на его жизненного цикла.

Именно поэтому приведенный ниже код выполняется один раз.
var $ prom = PageUrlService.getPageUrls();

Поместите вышеуказанный код внутри routeChangeStart.

Смежные вопросы