注销后以角度js重新加载页面

时间:2017-03-18 13:00:24

标签: angularjs node.js mean-stack ngroute

大家好,我是平均堆栈开发的初学者,我试图在注销后刷新页面。我试过location.reload();但它没有工作告诉我在这种情况下页面重新加载的可能代码

$rootScope.$on('$routeChangeStart', function (event) {
    var storage = userService.isLoggedIn();
    console.log(storage);

    if (!storage) {
        console.log('DENY');
        $rootScope.adminlogin = "adminlogin";
        console.log($rootScope.adminlogin);

        $location.path('/login');
        $route.reload();      
       // $state.go('/login', null, {reload: true});
    }
    else {
        console.log('ALLOW');
        $rootScope.admindashboard = "admindashboard";
         var path = $location.path();
          console.log(path);
          console.log(storage);
         if(path == '/login'){
            $location.path('/');
         }


    }
});

3 个答案:

答案 0 :(得分:4)

如果要刷新页面,则应使用$window服务中的pdist。它与浏览器中的重新加载按钮功能相同。

您应该使用$window服务而不是根据window直接访问原生AngularJS documentation对象的原因:

  

虽然窗口在JavaScript中是全局可用的,但它会导致   可测性问题,因为它是一个全局变量。在AngularJS中我们   总是通过$ window服务引用它,所以它可能是   被覆盖,删除或嘲笑以进行测试。

如您所说,您正在使用$route服务,只需致电$route.reload(),只会重新加载您的控制器,而不是整个应用程序。

答案 1 :(得分:0)

你需要做的就是Vanilia JS的这一小部分:             document.location.href=document.location.href

编辑:为什么这会被低估?

答案 2 :(得分:0)

如果您正在使用路线,那么点击退出时只需将其路由到您的登录页面。

从演示中快照:

这些是我的路线:

$routeProvider
        .when('/login', {
            controller: 'LoginController',
            templateUrl: 'modules/authentication/views/login.html',
            hideMenus: true
        })

        .when('/', {
            controller: 'HomeController',
            templateUrl: 'modules/home/views/home.html'
        })

        .otherwise({ redirectTo: '/login' });

当我点击'退出'在我的页面上它应该像:

<p><a href="#/login">Logout</a></a></p>

它应该根据路由重定向到登录页面。