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

ako*_*nsu 23 angularjs

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

$resource(url[, paramDefaults][, actions]);
Run Code Online (Sandbox Code Playgroud)

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

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

mko*_*yak 7

假设您有这样的资源:

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

这意味着该值:userId在您的网址将与被替换id从用户对象属性要求属性时.

那么什么时候需要?当你对现有用户做某事时,例如get更新一个用户,这是必需的.创建用户时不需要它.

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

这是你期待已久的例子:

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

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

  • 这个答案(特别是其中的例子)无法解释'@id'的目的.这里有一个更好的答案:[传递给$ resource的@id是什么?](http://stackoverflow.com/questions/17559515/what-is-id-as-passed-to-resource). (19认同)
  • 它与AngularJS文档犯了同样的错误,说"......将被用户对象的id属性替换......"用户对象中的'id'在哪里? (2认同)
  • 为什么不``User.get({id:123,dog:'Matt'},function(){..})`? (2认同)