我的角度应用程序的URL是这样的:
http://www.domain.com/project/edit/0#/step1 //create new project if project_id = 0
^
http://www.domain.com/project/edit/1#/step1 //edit existing project if project_id > 0
^
http://www.domain.com/project/edit/2#/step1 //edit existing project if project_id > 0
^
当用户保存项目和PROJECT_ID是0,我基本上只是调用服务器端脚本并返回新创建的项目的project_id(比如“3”)。然后,我通过脚本返回的PROJECT_ID更新地址栏中的网址如下:
window.history.pushState({}, "URL updated", '/project/edit/'+new_project_id);
这将改变在地址栏中的URL,而无需重新加载页面(这样,当用户按下保存,在URL地址栏会自动更改为http://www.domain.com/project/edit/3
,这也是稍后编辑项目的URL)。
但最近我(我使用哈希语法#/step1
,#/step2
,#/step3
在URL的末尾管理视图)添加$routeProvider
到我的应用程序。
现在,每当我打电话window.history.pushState
,也是$routeProvider
只是重定向页面/重新加载到http://www.domain.com/project/edit/0#/step1
而不是改变地址栏的网址我得到这个infidig
错误。
我使用$location.path
来更新我的网址试过,但井号(#/step1
部分)之后发生改变的部分,而我想要的#
号(/edit/0
到/edit/4
等)
之前更换部分所以我的问题是如何使用$location
或$route
更改地址栏中的网址,如window.history.pushState
?
P.S.我也尝试使用$ locationProvider.html5Mode(true),但这不起作用或者 – supersan