我正在使用$ 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/

10-09 18:49