Angular 中的 $update PUT 方法?

$update PUT method in Angular?

当使用 ui-router 而不是 ngRoute 进行路由时,我在 Angular 中找不到任何使用 $update PUT 方法的示例。使用 ui-router 时是否可以使用 $update PUT 方法?

您在问题评论中链接的示例中的 $update 方法与 $routeParams$stateParams 无关。这些(在大多数情况下)仅引用 url 中存在的参数。

例如,如果您在配置中将 url 声明为:/#/foo/:id/bar 并且您访问了 url:/#/foo/5/bar?hello=world&verified=1 然后 $routeParams$stateParams 将是一个如下所示的对象:

{id: 5, hello: "world", verified: "1"}

注意:在$stateParams的情况下,我认为config中的url可能需要声明为:/foo/:id/bar?hello&verified

至于$update方法和PUT请求,这些与angular-resource模块有关。从您引用的示例中,您会注意到声明了一个使用 $resource 服务的服务(工厂)。如果您查看 Returns 部分下的 docs,您会看到 $resource 服务将 return:

A resource "class" object with methods for the default set of resource actions optionally extended with custom actions. The default set contains these actions:

{'get':    {method:'GET'},
 'save':   {method:'POST'},
 'query':  {method:'GET', isArray:true},
 'remove': {method:'DELETE'},
 'delete': {method:'DELETE'} };

它进一步指出:

The actions save, remove and delete are available on it as methods with the $ prefix.

因此 $save$remove$delete 可用但没有 $update。这就是示例中的服务具有以下行的原因:

...
'update': { method: 'PUT'},
...

它旨在扩展这些默认操作集,以便 $update 可以作为对象的方法使用,并且它将使用 HTTP PUT 方法而不是像其他方法一样的 GET/POST/DELETE。

我建议您进一步阅读 $routeParams, $stateParams and ngResource,但希望它们之间的区别很清楚。