http://127.0.0.1:8080/test.html?target=bob
正如所料,location.search是“?target = bob”。
为了访问target的值,我发现了在网络上列出的各种例子,但没有一个在AngularJS 1.0.0rc10中工作。特别是,以下都是未定义的:
> $ location.search.target
> $ location.search [‘target’]
> $ location.search()[‘target’]
任何人都知道什么工作? (我使用$ location作为我的控制器的参数)
更新:
我在下面发布了一个解决方案,但我不完全满意。
Developer Guide: Angular Services: Using $location的文档说明了以下关于$ location:
When should I use $location?
Any time your application needs to react to a change in the current
URL or if you want to change the current URL in the browser.
对于我的场景,我的页面将从具有查询参数的外部网页打开,所以我不是“对当前URL的更改做出反应”本身。所以也许$ location不是正确的工作(对于丑陋的细节,见我的答案下面)。因此,我改变了这个问题的标题从“如何使用$ location?在AngularJS中读取查询参数?到“在AngularJS中阅读查询参数的最简洁的方法是什么?”。显然,我可以只使用javascript和正则表达式来解析location.search,但是低级的东西,所以基本的真的冒犯我的程序员的感觉。
所以:有一个更好的方式使用$位置比我在我的答案,或有一个简洁的替代?
// Given: // URL: http://server.com/index.html#/Chapter/1/Section/2?search=moby // Route: /Chapter/:chapterId/Section/:sectionId // // Then $routeParams ==> {chapterId:1,sectionId:2,search:'moby'}
编辑:您还可以获取和设置查询参数与$location.search() – 因为$ routeParams在控制器的初始加载后不太有用。