如何在angular.js中手动修改历史记录

时间:2014-02-04 23:02:38

标签: angularjs url angular-routing

我正在尝试从网址中删除查询字符串(带有邀请令牌)而不重定向网页。

所以示例url看起来像:

example.com/?invitation=fooo

我已经包含了ng-router,我使用hashbang(我不能在我们的项目中使用html5模式)用于路由,但是这个查询字符串是主url的一部分(在#之前),因为我想要服务器看到它。

在常规应用中,我只会使用历史记录API:

history.replaceState(null, null, '/');

但是在使用Angular的应用程序中会导致错误:

Error: [$rootScope:infdig] 10 $digest() iterations reached. Aborting!

我不能使用$ location.path,因为AFAIK它只允许修改url的角度可路由部分,即在我的情况下#之后的部分。 $ location.search甚至没有看到它。

您是否知道如何在不重定向页面的情况下使用angular从URL中删除查询字符串?

1 个答案:

答案 0 :(得分:1)

在Angular中,URL的所有修改都应通过$location服务进行。您可以通过使用空对象调用$location.search方法来清除查询字符串:$location.search({})。另外,请查看有关如何使用$location服务here

的指南