AngularJS中REST资源的链接(关系)
Links (relations) to REST resources in AngularJS
我有一个REST API,它返回User对象,其中它的角色通过链接到另一个对象来指定。所以在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
,但没有成功)。
完美的解决方案是从给定的href
创建资源,但由于我无法访问原型中的roles
,我不知道如何访问。
谢谢你的建议。
这应该可以完成
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
相关文章:
- 创建一个类似链接的按钮,并通过Javascript函数打开一个新的弹出窗口
- 如何使用jQuery自动打开页面上的所有链接
- 动态地改变“”的URL;添加新项目”;链接使用javascript/jquery
- jquery动画可以通过编程链接吗
- 在单击href链接的同时下载文件
- 尽管链接成功并已成功下载,但未找到NPM模块
- 制作一个不带HTML a标记但在动画播放完毕后指向其他页面的超链接
- ReactJS映射:如何仅在url变量不为空时呈现html链接
- 单击页面上的链接后高度发生变化
- 将纯文本URL转换为可单击链接
- 骨干关系中的链接模型
- AngularJS中REST资源的链接(关系)
- 如何重新加载带有链接的异步有很多关系
- 如何找到与轨道.js的链接关系
- 如何在Ember.js中使用链接描述hasMany关系
- 链接关系查询-我可以创建一个javascript关系以及css
- 带有链接关系的可编辑javascript网格系统
- 如何用JavaScript和n:m关系链接两条记录
- Jsp:复选框和超链接依赖关系
- 防止 ember 数据从服务器重新加载关系(如果它们被指定为链接)