我可以从AngularJS中回收对URL散列片段的控制吗?

mhe*_*ens 15 url angularjs

我正在使用AngularJS,并希望#hash-fragment在地址栏中处理给定的.但是,这是关键 - 我不会使用散列片段来编码路径.但似乎AngularJS坚持以这种方式解释它.

例如,html5Mode禁用时:

  • 给定的网址: http://my.domain.com#my-hash
  • 变成了http://my.domain.com/#/my-hash,和
  • $location.hash() 将是空的.

html5Mode启用了:

  • 给定的网址: http://my.domain.com#my-hash
  • 变成了http://my.domain.com/my-hash,和
  • $location.hash() 仍然是空的.

AngularJS一定在想:"哦,你有html5,让我为你删除那个哈希".多么体贴......

获取任何东西的唯一方法$location.hash()是当URL具有双重哈希时:

  • 对于给定的URL: http://my.domain.com##my-hash
  • $location.hash()最终等于"my-hash",和
  • 如果还$locationProvider.html5Mode(true)从URL中删除了其中一个哈希值.

但我真的需要一个简单的单个哈希字符来保持未处理状态.这可能吗?

tow*_*owr 15

#似乎在angular api docs页面上工作得很好.因此,通过一些窥探和测试,我发现了这一点

app.config(function($locationProvider) {
    $locationProvider.html5Mode(true).hashPrefix('!');
});
Run Code Online (Sandbox Code Playgroud)

有所作为.