Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
我可以从AngularJS中收回URL哈希片段的控制权吗?_Angularjs_Url - Fatal编程技术网

我可以从AngularJS中收回URL哈希片段的控制权吗?

我可以从AngularJS中收回URL哈希片段的控制权吗?,angularjs,url,Angularjs,Url,我使用的是AngularJS,希望在地址栏中处理给定的#散列片段。然而,-这是关键-我不会使用散列片段来编码路径。但安格拉斯似乎坚持这样解释 例如,禁用HTML5模式时: 给定的URL:http://my.domain.com#my-散列 变成http://my.domain.com/#/my-散列,以及 $location.hash()将为空 当启用HTML5模式时: 给定的URL:http://my.domain.com#my-散列 变成http://my.domain.com/my-

我使用的是AngularJS,希望在地址栏中处理给定的
#散列片段
。然而,-这是关键-我不会使用散列片段来编码路径。但安格拉斯似乎坚持这样解释

例如,禁用
HTML5模式
时:

  • 给定的URL:
    http://my.domain.com#my-散列
  • 变成
    http://my.domain.com/#/my-散列
    ,以及
  • $location.hash()
    将为空
当启用
HTML5模式时:

  • 给定的URL:
    http://my.domain.com#my-散列
  • 变成
    http://my.domain.com/my-hash
    ,以及
  • $location.hash()
    仍将为空
AngularJS一定在想:“哦,你有html5,让我帮你删除这个散列。”。多体贴啊

$location.hash()
获取任何内容的唯一方法是URL具有双哈希:

  • 对于给定的URL:
    http://my.domain.com##my-散列
  • $location.hash()
    最终等于
    “我的哈希”
    ,并且
  • 如果还
    $locationProvider.html5Mode(true)
    则从URL中删除一个哈希值
但我确实需要一个简单的散列字符来保持未处理状态。这可能吗?

#
在angular api文档页面上似乎工作得很好。所以通过一点窥探和测试,我发现

app.config(function($locationProvider) {
    $locationProvider.html5Mode(true).hashPrefix('!');
});

与众不同。

什么是用例?您是否考虑过使用
search
而不是hash?这是hash片段的原始用例:我使用它将注意力集中在当前文档的特定部分<代码>搜索
过于冗长,用于其他目的。我认为没有任何简单的方法可以重新获得对#的控制,但您可以选择关注文档的一部分,,,,@EliteOctagon:我知道有Javascript方法可以做到这一点。事实上,我自己也会使用Javascript,因为我所说的特定类型的“焦点”不仅仅是滚动到某个元素我的问题背后的目的是获得好的、可读的URL。我已经为我的应用程序精心设计了一个URL方案,该方案要求将哈希片段用于此目的。--(我可能不得不破解AngularJS代码。)当你抓取window.location.hash时会发生什么?啊,hashPrefix!回想起来,我从来没有尝试过这个,真是愚蠢。:-)这并不理想,因为这留下了一个字符,我不能再在散列片段的开头使用。但我相信我能找到一个对我来说无关紧要的角色。谢谢如果有人不想使用html5模式,该怎么办?
hashPrefix
也适用于非html5模式(对于非html5浏览器,它必须能够依靠该模式),请参阅示例和进一步的文档