来自文档(http://docs.angularjs.org/api/ngResource.$resource):
$resource(url[, paramDefaults][, actions]);
paramDefaults(optional) – {Object=}
– url 参数的默认值。...如果参数值带有前缀,@
则从数据对象中提取该参数的值。
问题是它们指的是什么数据对象?如何使用此功能?
来自文档(http://docs.angularjs.org/api/ngResource.$resource):
$resource(url[, paramDefaults][, actions]);
paramDefaults(optional) – {Object=}
– url 参数的默认值。...如果参数值带有前缀,@
则从数据对象中提取该参数的值。
问题是它们指的是什么数据对象?如何使用此功能?
假设您有这样的资源:
var User = $resource('/user/:userId', {userId:'@id'});
var user = User.get({userId:123});
这意味着当需要该属性时,您的 url 中的值将被用户对象中的属性:userId
替换。id
那么什么时候需要呢?当您对现有用户做某事时,它是必需的,比如get
ing 一个,更新一个。创建用户时不需要。
在大多数情况下,您希望在资源使用的 REST url 中至少有一个以 @ 为前缀的参数(可能是对象 ID)。如果你没有,这意味着为了保存一个对象的实例,你不需要知道它的存储位置。这意味着它是一个单例对象。也许像一个设置对象。
这是您期待已久的示例:
var User = $resource('/user/:userId/:dogName', {userId:'@id', dogName:@dog});
User.get({userId:123, dog:'Matt'}, function() { .. })
将产生请求:GET/user/123/Matt