我想使用AngularJS读取URL查询参数的值。我正在使用以下URL访问HTML:
http://127.0.0.1:8080/test.html?target=bob
正如预期的那样,location.search
是"?target=bob"
。为了访问target的值,我在网络上找到了各种示例,但是在AngularJS 1.0.0rc10中它们都不起作用。特别是以下所有内容undefined
:
$location.search.target
$location.search['target']
$location.search()['target']
有人知道什么有用吗?(我将其$location
用作控制器的参数)
更新:
我在下面发布了一个解决方案,但是我并不完全满意。开发人员指南:Angular Services:使用$ location中的文档陈述了以下内容$location
:
什么时候应该使用$ location?
任何时候您的应用程序需要对当前URL的更改做出反应,或者您想在浏览器中更改当前URL。
对于我的情况,我的页面将从带有查询参数的外部网页打开,因此,我本身并不是在“响应当前URL的更改”。因此,可能$location
不是适合该工作的工具(有关丑陋的详细信息,请参见下面的答案)。因此,我已将问题的标题从“如何使用$ location在AngularJS中读取查询参数?”中更改。“在AngularJS中读取查询参数的最简洁方法是什么?”。显然,我可以只使用javascript和正则表达式进行解析location.search
,但是对如此基本的内容进行低级配置确实会冒犯我的程序员。
所以:有没有$location
比我在回答中更好的使用方法,还是有简洁的替代方法?
http://127.0.0.1:8080/test.html#?target=bob
会起作用,请注意#
之前的?
。$location
是不被发送到服务器的第二层路由方法。
$location.search()['target']
后才$locationProvider.html5Mode(true)
可以工作。