AngularJS中的$ resource关系

时间:2012-04-02 17:41:47

标签: javascript angularjs

在AngularJS中定义隔离资源的常用方法是:

angular.service('TheService', function($resource){
  return $resource('api/url');
});

我正在尝试找出编写与其他模型相关的模型的最佳方法,例如Order有一个或多个OrderItem s。我的第一个想法是:

  1. 创建OrderServiceOrderItemService作为独立资源模型
  2. 编写一个查询OrderService并监视结果数组
  3. 的控制器
  4. 当结果数组发生更改时,查询所有项目ID的OrderItemService并使用扩展信息装饰order对象
  5. 这看起来有点乱。有更优雅的方式吗?

1 个答案:

答案 0 :(得分:18)

angular.service('OrderItem', function($resource) {
  return $resource('api/url/orderItem');
});

angular.service('Order', function($resource, OrderItem) {
  var Order = $resource('api/url/order');

  Order.prototype.items = function(callback) {
    return order.query({orderId: this.id}, callback);
  }
  return Order
});

上述内容会解决您的问题吗?然后你将它用作

var order, items;

Order.get({id: 123}, function(o) {
  order = o;
  o.items(function(is) { items = is; });
});

Angular的$资源不理解关系。我们希望在1.0之后改变这一点。

我认为您不应该直接将数据放在订单上,因为它不是订单的一部分,并且您将遇到问题,因为它现在也会有物品对象。