来自文档(http://docs.angularjs.org/api/ngResource.$resource):
$resource(url[, paramDefaults][, actions]);
paramDefaults(optional) – {Object=}
- url参数的默认值。
...
如果参数值以@
为前缀,则从数据对象中提取该参数的值。
问题是他们引用了什么数据对象?如何使用此功能?
答案 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