我有一个 REST API,它返回用户对象,它的角色是通过链接到另一个对象来指定的。所以在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;
}
]);
我试图添加(到那个资源代码块):
User.prototype.roles= function(){
return UserRoles.get({id:42});
};
这个在 ngRepeat 中调用时会冻结浏览器。所以我尝试了
User.prototype.roles = UserRoles.get({id:42});
这行得通。然后我尝试了
User.prototype.roles = $resource(this.roles.href, {}, {
'get': {
method: 'GET',
isArray: true
}
});
说,那roles
是未定义的。我还尝试将transformResponse
参数添加到用户服务GET
操作,但从未调用过该函数。
第二个选项工作得很好——除了我必须对用户 ID 进行硬编码。合适的解决方案是以某种方式为我获取用户 ID(我尝试过this.id
,但没有奏效)。
完美的解决方案是从 given 创建资源href
,但由于我无法roles
在原型中访问,我不知道如何。
感谢您的任何建议。