“at”在资源定义中签署参数名称

时间:2012-11-09 18:37:58

标签: angularjs

来自文档(http://docs.angularjs.org/api/ngResource.$resource):

$resource(url[, paramDefaults][, actions]);

paramDefaults(optional) – {Object=} - url参数的默认值。 ... 如果参数值以@为前缀,则从数据对象中提取该参数的值。

问题是他们引用了什么数据对象?如何使用此功能?

1 个答案:

答案 0 :(得分:7)

假设您有这样的资源:

var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123});

这意味着当需要该属性时,您的网址中:userId的值将替换为用户对象中的id属性。

那么什么时候需要?当您对现有用户执行某些操作时需要它,例如get更新一个用户。创建用户时不需要它。

在大多数情况下,您需要在资源使用的REST URL中至少有一个前缀为@的参数(可能是对象ID)。如果你没有,那就意味着为了保存一个对象的实例,你不需要知道它存储的位置。这意味着它是一个单例对象。也许就像一个设置对象。

这是您期待已久的例子:

var User = $resource('/user/:userId/:dogName', {userId:'@id', dogName:@dog});
User.get({userId:123, dog:'Matt'}, function() { .. })

将生成请求:获取/user/123/Matt