这个$ resource变量来自哪里?

时间:2013-04-12 17:30:21

标签: angularjs

angular documentation for $resource有以下示例:

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

我一直在谷歌搜索和阅读文档,无法弄清楚@id是如何填充的。 $resources中没有一个部分可以解释这一点。它必须是我没有遇到的文档中的其他地方。任何人都可以帮助我指出正确的方向吗?

1 个答案:

答案 0 :(得分:6)

在网址/user/:userId中,userId部分是占位符。您告诉AngularJS将其替换为实际的用户ID以获取真实的URL。

在第二部分中,您编写{userId : '@id'},您告诉AngularJS,如果未指定userId,则应使用对象中的id属性。

我将尝试用几个例子说明:

如果你这样做

var user = User.get({userId : 123});

您已明确指定userId的值,因此Angular将使用该值创建网址/user/123/。但是,如果你这样做

var user = User();
user.id = 123;
user.get()

在这种情况下,您没有明确指定userId的值,因此Angular会将user.id的值用于userId,然后再次创建网址/user/123/

与rajkamal提到的一样,这对非GET操作很有用。一个真实的用例是你做这样的事情:

// user wants to work with Post 10. So we fetch that
var post = Post.get({postId : 10});

// user works with it, makes some changes
post.body = 'New body';
post.topic = 'New topic';

// user is done, and wants to save. You make a POST call
// without having to specify it's id again
post.save();