2016-03-01 77 views
0

我有一个使用AngularJS开发的SPA应用程序。访问应用程序可以通过两种方式:角度javascript清理URL

1)通过输入地址(例如)www.example.com,或

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

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

遍历通过网页是由JavaScript命令处理:

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

到目前为止,这工作正常,除了URL与参数一起保存。因此,每当应用程序决定其需要去到另一页的URL(在浏览器的地址栏中)看起来像:

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

这是搞乱了应用程序的行为。

我的问题是:一旦我能够从原来的URL中提取接收到的参数,我想干净的网址,并用其正常的内容进行,这将是这样的:

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

这是如何实现的?

在此先感谢。

回答

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

+0

哇!这很快!谢谢@PrakashA。稍后再测试并通知您。 – FDavidov

+0

你好@PrakashA,你的解决方案也不起作用(与上面Vivek建议的结果非常相似)。 – FDavidov

0

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

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

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

$location.path('other_page')

应清除URL,并设置这个路径来代替。

+0

这也是快!我会稍后再测试并告诉你。谢谢@vivek。 – FDavidov

+0

你好@vivek。我只是测试了你的解决方案,不幸的是,它不像描述的那样工作。 – FDavidov

+0

@FDavidov请提供[plnkr](https://plnkr.co/)链接。 – vivek

0

刚刚找到了一个工作解决方案。我使用下面的命令:

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

哪个技巧。也许不是最优雅的,但它可以根据需要运作。

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

+0

那么....它的作品,但它没有。我会打开一个新的问题,更详细的问题[这里](http://stackoverflow.com/questions/35749052/angularjs-spa-application-cleaning-url)。 – FDavidov