【问题标题】:$update PUT method in Angular?Angular 中的 $update PUT 方法?
【发布时间】:2015-09-25 03:37:46
【问题描述】:

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

【问题讨论】:

  • 您能否详细说明一下路由中的 put 方法的含义?是在resolve 选项中还是...?你确定你的意思是 ui-routerngRoute 吗?因为 Angular 中的路由与 HTTP 没有太大关系。唯一的用途(在解析块之外)可能是检索使用templateUrl 指定的模板,这将是(并且应该是)GET 请求。也许您的意思不是 angular-resource 模块 ($resource)?
  • 在这个例子中 stackoverflow.com/questions/17650163/… 他们使用 $routeParams。 $scope.action.$update({actionid: $routeParams.actionid}) 我想做这样的事情,但是使用 ui-router 使用 $stateParams 而不是 $routeParams。

标签: angularjs mean-stack meanjs angular-ui-router


【解决方案1】:

您在问题 cmets 中链接的示例中的 $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,我认为配置中的url可能需要声明为:/foo/:id/bar?hello&verified

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

一个资源“类”对象,其中包含默认资源操作集的方法,可以选择使用自定义操作进行扩展。默认集包含以下操作:

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

它进一步指出:

save、remove 和 delete 操作都可以作为带有 $ 前缀的方法使用。

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

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

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

我建议您进一步阅读 $routeParams$stateParamsngResource,但希望它们之间的区别很明显。

【讨论】:

    猜你喜欢
    • 2020-02-05
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    • 2020-11-16
    • 1970-01-01
    • 2015-10-31
    • 1970-01-01
    • 2021-12-22
    相关资源
    最近更新 更多