目前,我正在使用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的控制器和配置进行哪些更改?
非常感谢你的帮助。
答案 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