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

时间:2013-10-08 16:04:11

标签: 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 您需要在新窗口中打开它才能测试哈希值

3 个答案:

答案 0 :(得分:8)

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

location.path("myappstate/1");

因为设置了角度以将第一个哈希状态视为应用的主要网址或路径。 location.hash()在主哈希状态(路径)

上设置辅助哈希

答案 1 :(得分:1)

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

$locationProvider.html5Mode(true);

这种方式在HTML5模式下运行,并且它不使用hashbangs。我建议this SO question了解更多信息。

答案 2 :(得分:0)

尝试使用

$location.search("key", "value")

代替。 如果你有复杂的状态,你甚至可以直接向搜索方法提供一个对象:

$location.search({foo: bar, baz: duh});