角度javascript清理URL

时间:2016-03-01 06:31:36

标签: javascript angularjs

我有一个使用AngularJS开发的SPA应用程序。可以通过两种方式访问​​应用程序:

1)输入地址(示例)www.example.com

2)点击http://www.example.com?do=this&param=1234

等链接

当应用程序启动时,它会检查URL,如果找到合适的参数,它会提示用户登录/注册,然后转到访问者应该执行某些活动的应用程序中的特定页面与参数this的操作1234相关。

遍历页面由javascript命令处理:

$window.location.href="#/other_page;

到目前为止,这项工作正常,只是URL与参数一起保存。因此,每当应用程序确定需要转到另一个页面时,URL(在浏览器的地址栏中)将如下所示:

http://www.example.com?do=this&param=1234#/other_page

这会弄乱应用程序的行为。

我的问题是:一旦我能够从原始网址中提取收到的参数,我想清理该网址并继续其正常内容,这将是:

http://www.example.com#/other_page

如何实现这一目标?

提前致谢。

3 个答案:

答案 0 :(得分:0)

使用$ location服务清除浏览器地址栏中的搜索查询参数。

语法是:

$location.search({});

例如完成登录或注册页面。

$scope.login = function(){
   // Check your logic and clear search params
    if($routeParams && $routeParams.src)
   {
       $location.search({});
       $location.path($scope.baseurl+$routeParams.src);
   }
};

这里使用$ routeParams服务你也可以检查$ window.location.search

答案 1 :(得分:0)

您可以使用$location服务。它说:

  

地址栏中URL的更改会反映到$ location服务中,$ location的更改会反映到浏览器地址栏中。

所以,基本上你可以这样做:

$location.path('other_page')

应该清除URL并改为设置此路径。

答案 2 :(得分:0)

刚刚找到了一个有效的解决方案我使用以下命令:

$window.location.href = location.protocol          + 
                        "//"                       + 
                        location.host              + 
                        "/index.html#/other_page"    ;

这就是诀窍。也许不是最优雅的,但它可以根据需要运作。

谢谢你们(@vivek和@prakashA)的支持。