AngularJS $ resource @prefixed参数

时间:2012-11-02 01:02:59

标签: javascript angularjs

我正在学习AngularJS并阅读其API

Angular JS Resource

它说“如果参数值以@为前缀,那么该参数的值将从数据对象中提取”,代码示例为:

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

我很慢,在示例之后我仍然没有得到前缀@的含义/做法。有人可以给我一些例子有和没有@并详细说明吗?感谢...

1 个答案:

答案 0 :(得分:10)

不确定。

这意味着当需要该属性时,您的网址中: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