$ ресурсные отношения в AngularJS - PullRequest
10 голосов
/ 02 апреля 2012

Обычный способ определения изолированного ресурса в AngularJS:

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

Я пытаюсь найти лучший способ написать модель, относящуюся к другим моделям, например, Orderкоторый имеет 1 или более OrderItem с.Моя первая идея заключается в следующем:

  1. Создание OrderService и OrderItemService в качестве независимых моделей ресурсов
  2. Создание контроллера, который запрашивает OrderService и просматривает массив результатов
  3. Когда массив результатов изменяется, запросите OrderItemService для всех идентификаторов элементов и украсьте объект order расширенной информацией, как это указано в

Это выглядит немного грязно.Есть ли более элегантный способ?

1 Ответ

18 голосов
/ 03 апреля 2012
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.

Я не думаю, что вы должны размещать данные в заказе напрямую, так как они не являются его частью, и у вас будут проблемы с сохранением заказа с тех пор, кактеперь у него также будет объект предметов.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...