我的角度應用程序的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