2017-03-18 69 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> 

它應按照路線重定向到登錄頁面。

相關問題