如果我目前的网址是: xzy.com/#/home/new
$location.hash()给出home/new并$location.path给出home/new
$location.hash("#/home/new")或$location.path("/home/new")两者都没有重新加载部分,但如果我这样做location.href="#/home/new",则重新加载部分.为什么是这样?此外,如果在部分内部有一个<a href="#/home/new">也将重新加载部分.为什么不设置路径/哈希重新加载部分?
Jer*_*ess 26
路线有两个部分.
第一个"哈希"实际上仅用于浏览器兼容性,如果您处于HTML5模式则不会显示.
例如,给定此URL:
http://localhost/spa.htm
Run Code Online (Sandbox Code Playgroud)
如果你设置:
$location.path('/myPath');
Run Code Online (Sandbox Code Playgroud)
你会得到:
http://localhost/spa.htm#/myPath
Run Code Online (Sandbox Code Playgroud)
在这种情况下,"哈希"只是为浏览器保存URL,方法是路径.还要注意当你调用路径时没有前面的/它被添加,即'myPath'成为'/myPath'.
如果您随后设置:
$location.hash('myHash');
Run Code Online (Sandbox Code Playgroud)
你会得到:
http://localhost/spa.htm#/myPath#myHash
Run Code Online (Sandbox Code Playgroud)
最后,让我们假设你没有先设置路径,然后你会得到:
http://locahost/spa.htm#/#myHash
Run Code Online (Sandbox Code Playgroud)
如果您使用的是HTML5模式,则会附加路径而不使用初始哈希.
第一个哈希用于附加路由,第二个哈希用于页面上的内容.例如,如果您使用该$anchorScroll服务,它将响应放入的内容$location.hash()而不是内置的内容$location.path().
总结一下:
http://localhost/spa.htm#{path}#{hash}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
70460 次 |
| 最近记录: |