10

AngularJSで分離されたリソースを定義する通常の方法は次のとおりです。

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

Order1つ以上のモデルなど、他のモデルに関連するモデルを作成するための最良の方法を見つけようとしていOrderItemます。私の最初のアイデアはこれです:

  1. OrderServiceおよびOrderItemServiceを独立したリソースモデルとして作成します
  2. クエリを実行しOrderServiceて結果の配列を監視するコントローラーを作成します
  3. 結果の配列が変更されたら、OrderItemServiceすべてのアイテムIDをクエリし、orderオブジェクトが入ってくるときに拡張情報でオブジェクトを装飾します

それは少し厄介なようです。もっとエレガントな方法はありますか?

4

1 に答える 1

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の$resourceは関係を理解し​​ていません。これは、1.0以降で変更したいものです。

データは注文の一部ではないため、直接注文に入れるべきではないと思います。また、itemsオブジェクトも含まれるようになるため、注文の永続化に問題が発生します。

于 2012-04-03T18:12:04.543 に答える