gpt4 book ai didi

angularjs - AngularJS 中的 $location.path() 与 $location.hash()

转载 作者:行者123 更新时间:2023-12-02 19:29:36 27 4
gpt4 key购买 nike

如果我现在的网址是:xzy.com/#/home/new

$location.hash()给出home/new$location.path还给出 home/new

  1. 两者有什么区别?
  2. 如果在 home/new 的 Controller 中我写 $location.hash("#/home/new")$location.path("/home/new")两者都不会重新加载部分内容,但如果我这样做location.href="#/home/new" ,它会重新加载部分。这是为什么?

此外,如果部分内部有 <a href="#/home/new">这也将重新加载部分。为什么设置路径/哈希不重新加载部分?

最佳答案

路线分为两部分。

第一个“哈希”实际上只是为了浏览器兼容性而存在,如果您处于 HTML5 模式,则不会显示。

例如,给定以下 URL:

http://localhost/spa.htm 

如果您设置:

$location.path('/myPath'); 

你将得到:

http://localhost/spa.htm#/myPath

在这种情况下,“hash”只是让浏览器保存URL,方法是path。另请注意,当您调用前面没有/的路径时,会添加它,即 'myPath' 变为 '/myPath'

如果您随后设置:

$location.hash('myHash'); 

您将得到:

http://localhost/spa.htm#/myPath#myHash 

最后,假设您没有先设置路径,那么您将得到:

http://locahost/spa.htm#/#myHash 

如果您使用的是 HTML5 模式,则附加路径时不带初始哈希值。

第一个哈希用于附加路由,第二个哈希是对页面内容的引用。例如,如果您使用 $anchorScroll 服务,它将响应放置在 $location.hash() 中的内容,而不是响应 $location.path() 中的内容.

总结:

http://localhost/spa.htm#{path}#{hash}

关于angularjs - AngularJS 中的 $location.path() 与 $location.hash(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22515584/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com