在刷新时从angularjs的URL中删除hashbang

On refresh remove hashbang from URL in angularjs

本文关键字:URL 删除 hashbang angularjs 刷新      更新时间:2023-09-26

当导航到一个使用angularjs的站点时,当改变路由时,它会在末尾添加一个hashbang,并且可以在刷新时恢复状态(这很酷)。

然而,在我的特定项目中,我希望它在刷新时加载主路由(就像它会如果没有hashbang)。

这可能吗?

您可以通过使用一个服务或多个控制器来实现这一点。在我看来,最简单的方法是在每个页面上设置一个简单的控制器和服务。

像这样:

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

简而言之,如果你在主页上,它会设置一个服务变量来表示你在主页上。只要不进行刷新,服务变量状态将是静态的。如果刷新完成,而您当前不在主页上,则服务变量将不同,并且用户将被重定向到主页。