从angularjs中的url获取资源参数

从angularjs中的url获取资源参数,angularjs,Angularjs,在angularjs中,给定urlhttp://example.com/photos/123和url模板http://example.com/photos/:id(在$resource中使用)。如何获取哈希:{id:123} 您可以使用角度 例如,在控制器中: $routeParams.id 将返回“123” 编辑:正如okigan所指出的那样,默认路由假设您有一个位置哈希,因此您的路由将需要修改。但是,通过打开HTML5模式,您可以关闭此选项以保留所需的路由。请看 更新:您还可以使用常规Ja

在angularjs中,给定url
http://example.com/photos/123
和url模板
http://example.com/photos/:id
(在$resource中使用)。如何获取哈希:{id:123}

您可以使用角度

例如,在控制器中:

$routeParams.id
将返回“123”

编辑:正如okigan所指出的那样,默认路由假设您有一个位置哈希,因此您的路由将需要修改。但是,通过打开HTML5模式,您可以关闭此选项以保留所需的路由。请看

更新:您还可以使用常规Javascript访问url部分。下面将获得第二个url部分

id = (window.location.pathname).split('/')[2]

您可以将其用作扩展功能的基础。

所有url参数都可以通过$routeParams服务访问:

从文件中:

路由参数是$location的search()和path()的组合。匹配$route路径时,将提取路径参数

例如:

// 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'}
编辑:鉴于以下评论,我扩展了我的答案

// The example url you provided.
var url = 'http://example.com/photos/123';
// We get a list with all the parts of the url.
var partList = url.split(/\/|\?|&|=|\./g);
// We get the bit that we know is the photo's id.
var idPart = partList[5];

url与当前控制器路由不相关($routeParams将在#之后获取参数,而#不在上述url中。如果不在,请提供更完整的示例。您不必在html5中使用#,因此它仍然有效。否则Op可以更改其路由以实现相同的目的。Op问题不使用uiRouter,因此没有相关的$routeParams。我已经更新了使用plain的答案javascript获取url部分。可能还有另一种角度的方法,我不知道。与Asta的回答相同:url与当前控制器路由无关($routeParams将在#之后获取参数,而#不在上述url中。如果没有,请提供更完整的示例。我担心,如果它没有注册,并且不是查询字符串,您将不得不手动对其进行解析。其他参数没有标准。让我看看我是否获取了。您有一个字符串,并且您想要123部分,因为您不知道这是一个ID?是的,是一个资源的完整url,我知道资源的结构,所以我想提取参数。逻辑实际上类似于ngRoute.switchRouteMatcher,但这是一个内部函数,无法访问,它错误地将hostname:99解释为参数。我想你需要的是一个好的正则表达式或sp它可以处理url的第n部分。是否希望在我的回答中使用类似的内容?似乎所需的逻辑深入到switchRouteMatcher()/pathRegExp()中的ngRoute实现中,但不处理主机名:port parsings。