我正在使用$ routeChangeStart将授权用户重定向到特定的URL,并阻止用户使用特殊的URL。
另外,我还有一些动态生成的页面,我想逐页访问该页面。
因此,我正在调用$ routeChangeStart,并且在此事件中,我正在调用$ http服务,该服务从数据库中获取所有页面段,并允许用户重定向到该页面。
发生什么情况,当我从后端添加新页面并尝试查看它时,不会从数据库中检索到最后插入的页面记录的page-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"
}
});
});
});
最佳答案
app.run在其生命周期中被调用一次。
这就是下面的代码执行一次的原因。
var $ promise = PageUrlService.getPageUrls();
将上面的代码放入routeChangeStart中。
关于javascript - angular js-在$ routeChangeStart中没有获取最后插入的记录,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/32325306/