我正在使用 $ routeChangeStart 将授权用户重定向到特定网址,并阻止用户访问特殊网址。
此外,我还有一些动态生成的页面,我想通过page-slug访问该页面。 所以我正在调用$ routeChangeStart,在这个事件中我调用了一个 $ http 服务,该服务从数据库获取所有页面slug并允许用户重定向到它。
发生了什么事,当我从后端添加新页面并尝试查看时,页面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"
}
});
});
});
答案 0 :(得分:1)
app.run在其生命周期中被调用一次。
这就是下面代码执行一次的原因 var $ promise = PageUrlService.getPageUrls();
将上述代码放在routeChangeStart。
中