2014-11-24 70 views
0

在Angular視圖中路由時,我們添加以下內容。我不明白需要添加#;如果我刪除它,我會得到一個404錯誤。爲什麼要在使用AngularJS進行路由時在路徑之前放置'#'?

a href="#/AddNewOrder"

+0

如果您正在使用HTML5 pushState的你不需要#。看看@ user1177476的答案。 https://github.com/angular-ui/ui-router/wiki/Frequently-Asked-Questions#how-to-configure-your-server-to-work-with-html5mode瞭解更多信息。 – Martin 2014-11-24 18:26:51

回答

1

在URL把#表示hash部分,其用於尋址單個頁面中的元素開始。在現代的單頁網絡應用程序中,這可以用來解決應用程序狀態。

如果你不把#那裏,你改變了path,這意味着你正在創建一個新的URL,並提示瀏覽器加載在這個新的URL,而不是當前頁面的內容。


正如其他海報建議,你不必使用html5mode時使用的哈希值。我離開了它,因爲它帶來了一些自己的挑戰,我覺得這超出了問題的範圍。

+0

對大多數SPA使用HTMLPushState可能是一個好主意 - 不需要#。 – Martin 2014-11-24 18:24:07

0

#或片段標識符是指示單個文檔的特定部分的方式。如果沒有#,則url對應不同的頁面。

例如www.yoursite.com/page鏈接到你的網站的/page位置,而www.yoursite.com/#/location指向你的網站的同一索引頁,但在網頁#location,或在你的情況,不同的模板視圖specfic點。

角度路由無法爲不同的服務器URL加載不同的模板。它專爲單頁應用程序設計,任何部分視圖或模板的加載都必須在同一個網頁或位置上進行。因此,當使用angularjs路由時,只有URL的片段部分發生變化。

有關片段的更多信息可以在這裏找到:http://en.wikipedia.org/wiki/Fragment_identifier