说,我有以下资源:
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(...)
?
这两种变体是否存在,它们之间有什么区别?
答案 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)
之后将实例解析为错误的资源)