2013-10-08 56 views
13

AngularJS 1.2.0(但較低的版本有同樣的問題)

我有一些小部件的Web應用程序,並希望自己的狀態保存到URL。 我現在用$location.hash('param1=1&param2=678')命令執行此操作。但我得到的網址如下:domain.com/##param1=1&param2=678 它工作正常,我可以恢復我的應用程序的狀態。我遇到的一個問題是,當有人點擊郵件應用程序中的鏈接時,他們的瀏覽器使用/ 23編碼哈希值,因此我的應用程序出錯。我該如何解決這個問題?由於

這裏是普拉克:http://plnkr.co/edit/VVjEUzROou6hu8B8sURa?p=preview 您需要在新窗口中打開它能夠測試哈希

+0

也許是因爲href =「#」在您的定位標記中?嘗試用href =「javascript:」代替。 – Magne

+0

我剛剛注意到,在[官方文檔](https://docs.angularjs.org/api/ng/service/$anchorScroll)中發生了相同的行爲(雙重哈希),奇怪的是我使用.search()進行序列化的 –

回答

1

這不是最好的答案,但你可以嘗試注入$ locationProvider並設置:

$locationProvider.html5Mode(true); 

這種方式角度運行在HTML5模式,它不使用hashbangs。我建議this SO question欲知更多信息。

0

使用

$location.search("key", "value") 

,而不是嘗試。 如果你有複雜的狀態,你甚至可以直接供應對象的搜索方法:

$location.search({foo: bar, baz: duh}); 
+0

之前,但是去了哈希,因爲最好自己分析字符串。我仍然沒有解決這個問題。如果有人想看到在行動:http://infolek.ru – outluch

8

對角標準哈希的位置,您使用

location.path("myappstate/1"); 

的角度設置爲首先想到的散列狀態作爲應用的主要網址或路徑。 location.hash()在主散列狀態(路徑)上設置第二散列

+1

它實際上'location.hash ='myhash';' – Juampy

相關問題