AngularJS 1.2.0(但较低版本具有相同的问题)
我有一个带有一些小部件的Web应用程序,并希望将其状态保存到URL中。
我现在用$location.hash('param1=1¶m2=678')
命令执行此操作。但我得到的网址是:domain.com/##param1=1¶m2=678
它工作正常,我可以恢复我的应用程序的状态。我遇到的一个问题是,当有人点击这样的链接时,例如,邮件应用程序,他们的浏览器使用/ 23编码其中一个哈希,因此我的应用程序出错了。我怎么解决这个问题?感谢
这是插件:http://plnkr.co/edit/VVjEUzROou6hu8B8sURa?p=preview 您需要在新窗口中打开它才能测试哈希值
答案 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});