angularjs – ngResource解析嵌套资源

有什么选项可以解析ngResource响应中的嵌套资源?

关于在ngResource中解析嵌套资源的端点存在一些相关的问题,但是这个问题是关于何时REST响应包含嵌套在正在查询的集合中的第二个资源,特别是1到1的映射,你不会有例如宠物/< id> / owner作为自己的资源.

假设有两种资源,宠物和主人:

GET /宠物:

[{
  name: 'spark',type: 'dog',owner: '/owners/3/' # alternatively just '3' or the full object.
}]

作为开发人员,我有时想要查询所有者资源,有时我想查询Pet资源,然后我自动想要将owner属性解析为资源实例.

这是我目前的解决方案:

.factory('Pet',function ($resource,Owner) {
  var Pet = $resource('/pets/:id',{id: '@id'});

  Pet.prototype.getOwner = function () {
    return new Owner(this.owner); // or Owner.get({id: this.owner})
  }

  return Pet;
})

这里的问题很多.有诚信 – 一个人.我相信,这种实现允许同一资源的多个实例.那就是实用性.您还有其他属性可以跟踪(owner和getOwner(),而不仅仅是所有者;如果您希望能够@R_372_301@,可能还有setOwner).

可以在transformResponse上构建替代解决方案,但是在每个具有嵌套映射的资源中都包含该解决方案.

我相信这就是Martin Gontovnikas创造Restangular的原因.他不喜欢在主角度框架中处理嵌套的$资源.我认为他的Restangular解决方案可以很好地满足您的需求.他的代码在GitHub here上,他在youtube here上有一个很好的介绍视频.

看看这个.我想你会发现它完全符合你的要求.

相关文章

AngularJS 是一个JavaScript 框架。它可通过 注:建议把脚本放在 元素的底部。这会提高网页加载速度,因...
angluarjs中页面初始化的时候会出现语法{{}}在页面中问题,也即是页面闪烁问题。出现这个的原因是:由于...
AngularJS 通过被称为指令的新属性来扩展 HTML。AngularJS 指令AngularJS 指令是扩展的 HTML 属性,带有...
AngularJS 使用表达式把数据绑定到 HTML。AngularJS 表达式AngularJS 表达式写在双大括号内:{{ expres...
ng-repeat 指令可以完美的显示表格。在表格中显示数据 {{ x.Name }} {{ x.Country }} 使用 CSS 样式为了...
$http是 AngularJS 中的一个核心服务,用于读取远程服务器的数据。读取 JSON 文件下是存储在web服务器上...