23

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

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

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

问题是它们指的是什么数据对象?如何使用此功能?

4

1 回答 1

7

假设您有这样的资源:

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

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

那么什么时候需要呢?当您对现有用户做某事时,它是必需的,比如geting 一个,更新一个。创建用户时不需要。

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

这是您期待已久的示例:

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

将产生请求:GET/user/123/Matt

于 2012-11-09T18:41:10.110 回答