0

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

但是,在我的特定项目中,我希望它在刷新时加载主路由(就像没有 hashbang 一样)。

这可能吗?

4

1 回答 1

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

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

于 2013-05-10T16:48:32.343 回答