angular js - $ routeChangeStart中没有最后插入的记录

时间:2015-09-01 06:53:24

标签: javascript angularjs

我正在使用 $ 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"
            }
        });
    });
});

1 个答案:

答案 0 :(得分:1)

app.run在其生命周期中被调用一次。

这就是下面代码执行一次的原因  var $ promise = PageUrlService.getPageUrls();

将上述代码放在routeChangeStart。