我正在使用离子框架链接在一起的多个html文件创建一个网站,并使用AngularJS在状态之间进行转移。我想知道href中的#含义以及它在状态转移中扮演的角色。如果我在
这样的文字上有href<a href="#/app/page2">hi</a>
有没有办法配置网址,以便在没有localhost/index.html#/app/page2
的情况下说localhost/index.html/page2
而不是"#/app"
?我试过了
$locationProvider.html5Mode(true);
但它没有工作
答案 0 :(得分:2)
首先,网址中的#
是什么意思
任何包含#字符的URL都是片段URL。部分 #左侧的URL标识可以的资源 由浏览器和右边的部分下载,称为 片段标识符,指定资源中的位置
在此处阅读更多内容 - &gt; source
换句话说:#
之后的部分可以“提供”而不需要完整的http请求。事实上,#
之后的部分永远不会在任何http请求中发送。
默认情况下,angularjs与网址中的#
一起使用。这意味着角度路由器只有在拥有#时才会获取URL。然后在您的控制器中,您可以捕获请求并使用ajax获取所需的数据。
http://example.com/#/about
http://example.com/#/contact
你可以通过启用html5mode
来禁用它,你可以把它放在你的路由器配置中:
$locationProvider.html5Mode(true);
那么你的网址应该看起来像这样,角度路由器应该可以正常工作。
http://example.com/about
http://example.com/contact
我建议不要使用#urls,有点老。我的选择是使用普通网址。