我为什么要把#'#'在使用AngularJS进行路由之前的路径?

时间:2014-11-24 17:26:40

标签: angularjs routing

在Angular视图中进行路由时,我们添加以下内容。我不明白需要添加#;如果我删除它,我会收到404错误。

a href="#/AddNewOrder"

3 个答案:

答案 0 :(得分:1)

#放入URL表示hash部分的开头,该部分用于处理单个页面内的元素。在现代单页Web应用程序中,这可用于解决应用程序状态。

如果您未将#放在那里,则表示您正在更改path,这意味着您正在创建新网址并提示浏览器在该新网址上加载内容当前页面。


正如其他海报所建议的那样,使用html5mode时不必使用哈希。我把它排除在外,因为它带来了一些自己的挑战,我认为这些挑战超出了问题的范围。

答案 1 :(得分:1)

enter link description here你没必要。您可以将网址配置为普通网址,但实际上它们的工作方式仍然相同。

检查https://docs.angularjs.org/guide/$location 并参考html5mode

它只适用于现代浏览器。旧浏览器仍会显示哈希值。但很酷的是,你可以用旧的/普通的方式编写你的URL。

答案 2 :(得分:0)

#或片段标识符是指示单个文档的特定部分的方式。如果没有#,则url对应于不同的页面。

例如www.yoursite.com/page链接到您网站的/page位置,而www.yoursite.com/#/location指向您网站的同一索引页但位于网页中的特定点{{1}或者,在您的情况下,是一个不同的模板视图。

Angular routing无法为不同的服务器URL加载不同的模板。它专为单页面应用程序而设计,任何部分视图或模板的加载都必须在同一个网页或位置上进行。因此,当使用angularjs路由时,只有url的片段部分会发生变化。

有关片段的更多信息,请访问:http://en.wikipedia.org/wiki/Fragment_identifier