$ location.search()无效

时间:2015-01-22 01:23:15

标签: angularjs angular-ui angular-ui-router

UPDATE2:

$ location仅适用于ng。 所以 $location.search 正在进行搜索 它从#!等标记解析网址。

$window.location 处理浏览器网址

在我的问题中,第一个网址搜索是空的 第二个网址搜索是{code&状态}

是不是?

UPDATE1:

我发现*$window.location*获得了正确的数据。 *$location*覆盖了所有内容吗?

问题 我在我的项目中使用 angular-ui-router 。我想从网址获取搜索字符串, 像这样:http://localhost:8080/?code=123456&state=auth#/api/oauth2_authorize app.config 中,我设置:

$stateProvider.state("oauth2_authorize", {
            url: "/api/oauth2_authorize?code&state",
            template: "",
            controller: function($location) {
                       var search = $location.search();
            }
        })

我认为搜索将是{ code : 123456; state:auth}但不是。 我尝试将网址更改为:http://localhost:8080/#/api/oauth2_authorize?code=123456&state=auth 它有效。

有人可以告诉我为什么? html5mode false 。 我查看angularjs的文档, $ location 的示例显示,我可以从两个网址获取搜索字符串。 我尝试使用$ urlRouterProvider,但它仍然是空的。

我能做什么?

2 个答案:

答案 0 :(得分:1)

因为,如果您将html5mode设置为false,则您的所有网址都需要#。即使在你的网址状态,你也没有#

出于这个原因 http://localhost:8080/?code=123456&state=auth#/api/oauth2_authorize不起作用 http://localhost:8080/#/api/oauth2_authorize?code=123456&state=auth 它确实。

检查$location {{1}}和网址

答案 1 :(得分:0)

我猜您使用的AngularJs版本有问题。 你使用的是哪个版本? 请参阅以下链接建议相同的问题,并修复HTML5Mode = true https://github.com/angular/angular.js/issues/6198

或者只是浏览以下页面,可能有助于解决您的问题。 https://github.com/angular/angular.js/issues/5964

https://github.com/angular/angular.js/issues/4607