AngularJS $ resource @prefixed参数

Tom*_*Tom 13 javascript angularjs

我正在学习AngularJS并阅读其API

Angular JS资源

它说"如果参数值带有前缀,@那么从数据对象中提取该参数的值"代码示例:

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

我很慢,在示例之后我仍然没有得到前缀@意味着什么/做什么.有人可以给我一些例子有没有@并详细说明呢?谢谢...

mko*_*yak 10

当然.

这意味着该值: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

  • 我刚刚尝试了你建议的代码 - 它产生了一个微妙的不同的GET请求:`/ user/123 /?dog = Matt`.angular如何确定属性是作为GET参数发送(例如`dog` here)还是作为URL的一部分(这里是`userId`)?在我的情况下,我想要一个用户ID作为URL的一部分发送,但没有后续参数.可以这样做吗? (3认同)
  • @Racing蝌蚪.由此产生的?dog = Matt是由于发送的参数是dog而不是dogName.如果它是dogName,你会得到/ user/123/Matt. (3认同)
  • 我在http://stackoverflow.com/a/17560529/75113中找到了答案,以便更清楚. (2认同)