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
它有效。
我能做什么?
答案 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