2017-03-18 94 views
0

嗨,大家好我是一个初学者,在平均堆栈开发中我已经尝试在注销后刷新页面。我试过location.reload();但它不工作,告诉我要重新加载页面的代码可能在这种情况下注销后在角js中重新加载页面

$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('/'); 
     } 


    } 
}); 
+0

'$ state.go('/ login',null,{reload:true})'行不起作用??? –

+1

我没有使用$ state我使用了重定向路线 –

+0

使用'$ window.location.reload()'[reload page](http://stackoverflow.com/questions/16703215/how-to-reload-or-重新呈现整个页面使用angularjs) –

回答

0

所有你需要做的就是这个小Vanilia JS的行: document.location.href=document.location.href

编辑:这是为什么越来越downvoted?

4

如果要刷新页面,您应该使用$window.location.reload()从该$window服务。它与浏览器中的重新加载按钮具有相同的功能。

的原因,你应该使用$window服务,而不是直接访问本地window对象按照AngularJS documentation

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

在一个侧面说明,你说你正在使用的服务$route,只是打电话$route.reload()只会重新加载你的控制器,而不是整个应用程序。

+0

你能告诉我在哪里可以放置它吗?我已经将它放在控制器中,当我再次调用登录页面时它重新加载 –

+0

只要'$ window'服务可用,就可以将它放在任何位置。我很抱歉,我告诉过你如何刷新页面,但是你需要知道_when_你想刷新页面和_where_你想要放置代码,你应该知道:) – cnorthfield

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> 

它应按照路线重定向到登录页面。

相关问题