2013-05-10 76 views
0

在更改路由時,如果瀏覽使用angularjs的站點,它會在最後添加一個hashbang,並可以在刷新時恢復狀態(這非常酷)。在刷新時從angularjs中刪除hashbang

但是,在我的特定項目中,我希望刷新加載主要路由(就像它會沒有hashbang一樣)。

這可能嗎?

+0

我的理解是,您希望刷新瀏覽器以導航到不同的URL。而你想從javascript中完成。我不明白這是如何從JavaScript中可能的。另外,這不會再刷新,而是其他的東西,這可能會讓用戶感到不安。 – akonsu 2013-05-10 05:25:57

回答

1

您可以通過使用服務或多個控制器來做到這一點。 IMO最簡單的方法就是建立一個簡單的控制器和服務,包含在每個頁面上。

事情是這樣的:

<div style='display:none;' ng-controller='RefreshController'></div> 

服務:

.factory('redirect',function($rootScope){ 
    var rScope={}; 
    rScope.redirect=true; 
    rScope.set=function(){ 
     rScope.redirect=false; 
    }; 
    rScope.get=function(){ 
     return rScope.redirect; 
    }; 
    return rScope; 
}); 

控制器:

function RefreshController($location,redirect){ 
    if($location.path()=='/'){ 
     redirect.set() 
    } 
    if(redirect.get()){ 
     $location.path('/'); 
    } 
} 

簡而言之,如果你是在主頁上,它會設置一個服務變量,說你在主頁上。只要沒有刷新完成,服務變量狀態將是靜態的。如果刷新完成並且當前不在主頁面上,則服務變量將不同,並且用戶將被重定向到主頁面。