【问题标题】:Extracting URL parameters with AngularJS using hashbang method使用 AngularJS 使用 hashbang 方法提取 URL 参数
【发布时间】:2014-04-27 11:48:31
【问题描述】:

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

使用html4mode提取URL参数,URL为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 的配置进行哪些更改?

非常感谢您的帮助。

【问题讨论】:

    标签: javascript angularjs url-parameters


    【解决方案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 或其他),您应该添加“!”您的 URL 的前缀,带有:

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

    你的网址变成:

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

    $location 的搜索方法应该可以工作,遵循documentation

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

    【讨论】:

    • 感谢您的回答。我做了一些细微的修改以获得我已经测试并确认的正确答案。查看修改后的网址。
    猜你喜欢
    • 2015-06-13
    • 2017-07-30
    • 2013-02-02
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 2015-02-11
    • 2013-11-21
    相关资源
    最近更新 更多