13

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

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

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

4

3 回答 3

8

对于角度的标准哈希位置,您使用

location.path("myappstate/1");

因为 Angular 设置为将第一个哈希状态视为应用程序的主要 url 或路径。location.hash() 在主哈希状态(路径)上设置辅助哈希

于 2013-11-01T17:07:09.827 回答
1

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

$locationProvider.html5Mode(true);

这样 Angular 在 HTML5 模式下运行,它不使用 hashbangs。我推荐这个 SO question以获取更多信息。

于 2013-10-08T16:18:14.507 回答
0

尝试使用

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

反而。如果您有复杂的状态,您甚至可以直接向 search 方法提供一个对象:

$location.search({foo: bar, baz: duh});
于 2013-10-08T16:58:39.807 回答