我有一个使用AngularJS开发的SPA应用程序。可以通过两种方式访问应用程序:
1)输入地址(示例)www.example.com
或
2)点击http://www.example.com?do=this¶m=1234
当应用程序启动时,它会检查URL,如果找到合适的参数,它会提示用户登录/注册,然后转到访问者应该执行某些活动的应用程序中的特定页面与参数this
的操作1234
相关。
遍历页面由javascript命令处理:
$window.location.href="#/other_page;
。
到目前为止,这项工作正常,只是URL与参数一起保存。因此,每当应用程序确定需要转到另一个页面时,URL(在浏览器的地址栏中)将如下所示:
http://www.example.com?do=this¶m=1234#/other_page
这会弄乱应用程序的行为。
我的问题是:一旦我能够从原始网址中提取收到的参数,我想清理该网址并继续其正常内容,这将是:
http://www.example.com#/other_page
。
如何实现这一目标?
提前致谢。
答案 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)的支持。