2013-12-18 22 views
1

我試圖將我的應用程序中的網址從「http://www.test.com/foo」更改爲「http://www.test.com/bar+someVariable(某些變量是我從條形圖控制器內部的http請求中收到的字符串) using history.pushState()。在我的路線我啓用html5mode和一切工作正常。我還使用location.path()按照文檔中的說明在視圖和控制器之間切換。現在,一旦應用程序切換視圖和控制器,我將history.pushState(null,null,「/ bar」+ somevariable)添加到「/ bar」的控制器。一切正常,網址已更新,但在控制檯中,我收到「10 $ digest()迭代到達。中止!」錯誤。我懷疑激活history.pushState函數會以某種方式干擾angular的$ location或$ route服務。

在角度內使用history.pushState()而沒有收到$ digest錯誤的正確方法是什麼?

順便說一句,我使用提前角1.0.3

感謝, 吉東

+0

我有同樣的問題,當我做一些花哨的東西與動態包括和動態添加控制器。即使它運行良好,只要我使用'pushState',一切都會變得混亂。 – Domi

回答

0

更改與路徑

$location.path('/newValue') 

參見:http://docs.angularjs.org/guide/dev_guide.services.$location

+0

嗨大魚,我已經在使用$ location.path()。我試圖在重新路由後將路徑的網址更改爲新的內容。例如,使用您提供的內容我想將應用程序路由到/ newValue,但是在url中,我希望看到/ newValue/someVariable,並且還可以根據從服務器接收的數據更改someVariable。你知道如何做到這一點? – Gidon

+0

我不完全相信我會收到你的請求,也許你可以爲這個例子做一個簡單的jsfiddle/plunkr?我的意思是,如果url設置爲/ x,然後設置爲/ x/y,那麼很自然這是由Angular路由的,並且$ routeProvider會啓動。您可以在那裏捕獲這些路由並停止/操作它。 – oori

1

這是很難肯定沒有看到相關資源,但這是IE舊版本中的一個常見問題(主要是我認爲的8和9)。幾周前當我遇到這種解決方案(如果您使用IE,可能適用於您)在我的導航中更改了我的定位標記。

我:

<a href="#"></a> 

什麼固定它:

<a href=""></a> 
相關問題