Angular.js中的$ resource关系[已更新]

时间:2012-06-14 17:38:20

标签: angularjs

  

我正在尝试找出编写与其他模型相关的模型的最佳方法,例如具有1个或更多OrderItems的订单。

如何在加载订单时获取相应的OrderItem?

angular
    .module('MyApp.services', ['ngResource'])
        .factory('Order', function($resource) {
            return $resource('/api/v1/Order/:orderId?format=json', {}, {});
        });
        .factory('OrderItem', function($resource) {
            return $resource('/api/v1/OrderItem/:orderitemId?format=json', {}, {});
        });

我在get order上尝试了一个回调函数来加载OrderItems,但是没有用。


有一个非常相似的问题,但它已经过时了:$resource relations in Angular.js

2 个答案:

答案 0 :(得分:4)

您可以将该功能包装在另一个获取订单商品的位置吗?

myApp.factory('Order', function($resource) {
  var res = $resource('/api/Order/:orderId', {}, {
    '_get': { method: 'GET' }
  });

  res.get = function(params, success, error) {
    return res._get(params, function(data) { 
      doOrderItemStuff();
      success(data);
    }, error);
  }
  return res;
}

答案 1 :(得分:0)

在Andy回答之前,我正在控制器中解决它。为此,只需添加:

function OrderCtrl($scope, $routeParams, $resource, Order, OrderItem) {

    $scope.order = Order.get({
        orderId : $routeParams.orderId
    }, function(order) {
                doOrderItemStuff();
    });

}