我们什么时候在角度资源上使用。$ put而不是.put?

时间:2014-09-15 11:16:25

标签: angularjs angular-resource

说,我有以下资源:

angular.module('app.resources.demo-resource', ['ngResource'])
.service('demoResource',
  function ($resource) {
    return $resource('/api/path', { }, { put: { method: 'PUT' } });
  });

我希望稍后使用promises来调用put请求。 我该如何正确地做到这一点?

newResource.$put().then(...)newResource.put().then(...)
这两种变体是否存在,它们之间有什么区别?

2 个答案:

答案 0 :(得分:2)

当您定义“非GET”操作(基本上,一个方法具有请求主体:PUT,POST,PATCH)时,ngResource将自动在每个实例上创建相应的操作/方法资源(以$为前缀)。这只是为了方便。

基本上,您有两种方法可以调用此类操作:

<Resource>.action([parameters], postData, [success], [error])

<instance>.$action([parameters], [success], [error])

后者的好处是您不需要指定postData(它是充当数据的<instance>对象。)

答案 1 :(得分:0)

承诺:(致@ExpertSystem的答案)

<Resource>.action([parameters], postData).$promise

<instance>.$action([parameters])

自动成为承诺。第一种方法在实践中看起来更稳定。 (Angular在我_.extend({}, resource)之后将实例解析为错误的资源)