从文档(
http://docs.angularjs.org/api/ngResource.$resource):
$resource(url[,paramDefaults][,actions]);
paramDefaults(可选) – {Object =} – url参数的默认值。
… …
如果参数值前缀为@,则从数据对象中提取该参数的值。
问题是他们引用什么数据对象?如何使用此功能?
让我们说你有这样的资源:
var User = $resource('/user/:userId',{userId:'@id'}); var user = User.get({userId:123});
这意味着在需要该属性时,url中的userId值将被替换为用户对象的id属性。
那么什么时候需要?当您对现有用户进行某些操作时需要,如更改一个。创建用户时不需要。
在大多数情况下,您将希望在资源使用的REST URL中至少有一个前缀为@的参数(可能是对象标识)。如果你没有一个,那意味着为了保存一个对象的实例,你不需要知道它存储在哪里。这意味着它的一个单身对象。也许像一个设置对象。
这是你期待已久的例子:
var User = $resource('/user/:userId/:dogName',{userId:'@id',dogName:@dog}); User.get({userId:123,dog:'Matt'},function() { .. })
将产生请求:GET / user / 123 / Matt