angularjs - 在 AngularJS 中读取查询参数最简洁的方法是什么?

标签 angularjs ngroute

我想使用 AngularJS 读取 URL 查询参数的值。我使用以下 URL 访问 HTML:

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()['目标']

有人知道什么有效吗? (我使用 $location 作为 Controller 的参数)

<小时/>

更新:

我在下面发布了一个解决方案,但我对此并不完全满意。 文档位于 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 的更改使用react”。所以也许 $location 不是适合这项工作的工具(对于丑陋的细节,请参阅下面我的答案)。因此,我将此问题的标题从“如何使用 $location 读取 AngularJS 中的查询参数?” 更改为“如何使用 $location 读取 AngularJS 中的查询参数?”到“在 AngularJS 中读取查询参数最简洁的方法是什么?”。显然,我可以只使用 JavaScript 和正则表达式来解析 location.search,但是对于如此基本的东西进行低级处理确实冒犯了我的程序员的敏感性。

那么:是否有比我在答案中更好的使用 $location 的方法,或者是否有简洁的替代方法?

最佳答案

您可以注入(inject)$routeParams (需要 ngRoute )到您的 Controller 中。这是文档中的示例:

// 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 获取和设置查询参数服务(在 ng 中提供),特别是它的 search 方法:$location.search()

$routeParams 在 Controller 初始加载后就没那么有用了; $location.search() 可以随时调用。

关于angularjs - 在 AngularJS 中读取查询参数最简洁的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11063673/

相关文章:

javascript - 路由参数为空

jquery 验证不适用于 ng View 内的模板

javascript - 子文件夹的 Angular Route 出错

javascript - Angular 数据绑定(bind) - ng-book 声称您应该通过对象属性进行绑定(bind)。为什么?

angularjs - 在注销 Angular.js 时删除模板缓存

javascript - JSONP 没有按预期在 AngularJS 中工作

javascript - Node js 从 Angular PUT 调用接收到错误数据

javascript - 在 google cdn 上找不到 Angular 路由 js

javascript - 如何解析routeProvider中的参数

javascript - 如何获取用 $sce 包装的对象的未包装值?