使用hashbang方法使用AngularJS提取URL参数

时间:2014-04-27 11:48:32

标签: javascript angularjs url-parameters

目前,我正在使用AngularJS html4mode来提取URL参数。我想改为使用hashbang方法,因为我的路由在启用html4mode后搞砸了。

使用html4mode提取网址参数时,网址为http://127.0.0.1/webroot/start.html?Venue=XXX

$ locationProvider的配置代码如下;

$locationProvider.html5Mode(true);  //configure $location

控制器内部;

var url_param = ($location.search()).Venue;  

我尝试转换为hashbang时失败了。我现在不知所措。

要转换为hashbang,URL将如何显示以及需要对$ locationProvider的控制器和配置进行哪些更改?

非常感谢你的帮助。

1 个答案:

答案 0 :(得分:1)

如果你关闭html5mode的URL:

http://127.0.0.1/webroot/start.html?Venue=XXX

变为

http://127.0.0.1/webroot/start.html#/?Venue=XXX

如果你想使用hashbang URL(对于SEO,Facebook或其他什么),你应该添加“!”您的网址前缀为:

$locationProvider.html5Mode(false).hashPrefix('!');

您的网址变为:

http://127.0.0.1/webroot/start.html#!/?Venue=XXX

$ location的搜索方法应该在documentation

之后工作

从html5Mode移动到hashbang(反之亦然)需要您重构应用中的链接。 为了避免这种情况,我更喜欢使用ui-router并根据状态转换修改链接(即使用ui-sref)。通过这种方式,ui-router可以为您修改带或不带哈希的URL