Angularjs 如何在angular.js中手动修改历史记录
我正在尝试从url中删除querystring(带有邀请令牌),而不重定向页面 因此,示例url如下所示:Angularjs 如何在angular.js中手动修改历史记录,angularjs,url,angular-routing,Angularjs,Url,Angular Routing,我正在尝试从url中删除querystring(带有邀请令牌),而不重定向页面 因此,示例url如下所示: example.com/?invitation=fooo 我已经包括了ng router,我正在使用hashbang(我不能在我们的项目中使用html5模式)进行路由,但是这个查询字符串是主url(在#之前)的一部分,因为我希望服务器看到它 在常规应用程序中,我只会使用历史API: history.replaceState(null,null,“/”) 但在使用角度传感器的应用中,它会导致
example.com/?invitation=fooo
我已经包括了ng router,我正在使用hashbang(我不能在我们的项目中使用html5模式)进行路由,但是这个查询字符串是主url(在#之前)的一部分,因为我希望服务器看到它
在常规应用程序中,我只会使用历史API:
history.replaceState(null,null,“/”)代码>
但在使用角度传感器的应用中,它会导致错误:
错误:[$rootScope:infdig]已达到10$digest()迭代次数。流产代码>
我不能使用$location.path,因为它只允许修改url的角度可路由部分,即在我的例子中#之后的部分$location.search甚至看不到它
您知道如何使用angular从url中删除querystring而不重定向页面吗?在angular中,url的所有修改都应该通过$location
服务进行。可以通过使用空对象调用方法来清除查询字符串:$location.search({})
。另外,请查看关于如何使用$location
服务的指南,就像我说的,这个查询字符串不在可路由部分,因为它在hashbang之前,我没有使用HTML5模式$location.search看不到它,并且无法修改它。什么是“可路由”部件$location
完全可以像http://www.foo.com?bar=23#baz
。由于我处于hashbang模式,示例url可能如下所示:www.example.com/?invitation=fooo\/base/path?foo=bar#baz
我指的是#之后的可路由部分!