Javascript AngularJS中REST资源的链接(关系)
我有一个REST API,它返回用户对象,其中的角色通过链接到另一个对象来指定。所以在Javascript AngularJS中REST资源的链接(关系),javascript,rest,angularjs,hypermedia,ngresource,Javascript,Rest,Angularjs,Hypermedia,Ngresource,我有一个REST API,它返回用户对象,其中的角色通过链接到另一个对象来指定。所以在localhost/project/api/users/27/是JSON对象: { "id": 42, "name": "John", "prijmeni": "Doe", "login": "johndoe", "nickname": null, "grade": 1.3, "roles": { "href": "http://local
localhost/project/api/users/27/
是JSON对象:
{
"id": 42,
"name": "John",
"prijmeni": "Doe",
"login": "johndoe",
"nickname": null,
"grade": 1.3,
"roles": {
"href": "http://localhost/project/api/users/1716/roles/"
}
}
我想做的是在控制器中获得角色。我的用户服务如下所示:
projectServices.factory('User', ['$resource', 'UserRoles',
function($resource, UserRoles, Role) {
var User = $resource('http://localhost/project/api/users/:id', {}, {
'query': {
method: 'GET',
isArray: true
}
});
return User;
}
]);
我尝试添加(到资源代码块):
当在ngRepeat中调用此选项时,浏览器将冻结。所以我试过了
User.prototype.roles = UserRoles.get({id:42});
这很有效。然后我试着
User.prototype.roles = $resource(this.roles.href, {}, {
'get': {
method: 'GET',
isArray: true
}
});
表示,角色
未定义。我还尝试将transformResponse
param添加到用户服务GET
操作中,但该函数从未被调用
第二个选项工作得非常好-除了,我必须硬编码用户ID。合适的解决方案是以某种方式为我获取用户ID(我尝试了this.ID
,但没有成功)
完美的解决方案是从给定的href
创建资源,但由于我无法访问原型中的角色,我不知道如何访问
谢谢你的建议 这应该能奏效
projectServices.factory('UserRoles', function(){
return $resource('http://localhost/project/api/users/:id', {id: @id},
{'query': {
method: 'GET',
isArray: true
})
}
现在你可以用
UserRoles.get({id:42})
// this makes the request : http://localhost/project/api/users/42
@id告诉angular使用传递的参数中的id键
UserRoles.get({id:42})
// this makes the request : http://localhost/project/api/users/42