可以 根据每个自定义 *** 作声明参数。
默认参数的名称含义是:默认参数(如:“在未提供其他参数的情况下使用”)。
使用的
'@'(无论是在默认参数或在动作参数)是 不 必需的。
它是为方便起见而提供的,具有特殊含义。
paramKey: '@someProp'意思是:
“对于具有请求正文的方法(例如POST,PUT等),如果我未明确提供参数值
paramKey,请在我的数据对象中查找名为的属性,
someProp并将其值用作
paramKey参数值”。
请注意,使用类方法时,必须显式提供数据对象:
SomeResourceClass.save({......});
当使用实例方法时,实例本身充当数据对象:
var instance = SomeResourceClass.get(...);instance.$save();
另请参 见此简短演示 。
更新:
似乎您想调用以下自定义 *** 作:
add: { url: ENV.NITRO_PROJECT_REST_URL + '/teamtechnicians/:teamId/:technicianId', method: 'POST'}
像这样尝试调用它
<ResourceClass>.add({teamId: teamId, technicianId:technicianId})无法按预期方式工作,因为它将(预期为)params对象解释为数据对象。
从
ngResource文档中,“非GET”方法(如您的方法)的方法签名为:
- 非GET“类” *** 作:Resource.action([参数],postData,[成功],[错误])
- 非GET实例 *** 作:instance。$ action([参数],[成功],[错误])
从上面的摘录中可以明显看出,如果仅在“类” *** 作调用中传递一个对象,则该
data对象将被解释为对象(请求的有效负载)。另外,如果您具有
@-prefixed默认参数,则URL参数将针对该
data对象进行解析(这就是它与默认参数一起使用的原因)。
为了使Angular将
params对象解释为一个
params(而不是
data对象),并且由于
data参数是强制性的,因此您需要这样调用它:
<ResourceClass>.add({teamId: teamId, technicianId: technicianId}, {})
(或者,您可能正在使用
TeamTechnicianinstance ,但这是另一回事了。)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)