angularjs $ location.hash使##,但我需要#

out*_*uch 13 url angularjs

AngularJS 1.2.0(但较低版本有相同的问题)

我有一个带有一些小部件的Web应用程序,并希望将其状态保存到URL中.我现在用$location.hash('param1=1&param2=678')命令做这个.但我得到的网址是:domain.com/##param1=1&param2=678 它工作正常,我可以恢复我的应用程序的状态.我遇到的一个问题是,当有人点击这样的链接时,例如,邮件应用程序,他们的浏览器使用/ 23编码其中一个哈希,因此我的应用程序出错了.我怎么解决这个问题?谢谢

这是插件:http://plnkr.co/edit/VVjEUzROou6hu8B8sURa? p =preview 您需要在新窗口中打开它才能测试哈希值

chr*_*arx 8

对于angular中的标准哈希位置,您可以使用

location.path("myappstate/1");
Run Code Online (Sandbox Code Playgroud)

因为angular设置为将第一个哈希状态视为应用程序的主要URL或路径.location.hash()在主哈希状态(路径)上设置二级哈希


Cap*_*paj 1

这不是最好的答案,但您可以尝试注入 $locationProvider 并设置:

$locationProvider.html5Mode(true);
Run Code Online (Sandbox Code Playgroud)

这样 Angular 在 HTML5 模式下运行,并且不使用 hashbang。我推荐这个问题以获取更多信息。