Javascript 如何创建嵌套的$resource-AngularJS

Javascript 如何创建嵌套的$resource-AngularJS,javascript,angularjs,Javascript,Angularjs,我正在试图找出如何创建嵌套的$resource。我提出了以下建议,这似乎有效,但似乎大错特错。希望有人能给我指出正确的方向 我的数据结构是: allData = [{ id:1, info:'someinfo', foo :'foobar', bar : {...}, baz : [{...}, {...}, {...}] }, {id:2, ...}, {id:3, ...} ]; 我希望allData中的每个对象都是$

我正在试图找出如何创建嵌套的
$resource
。我提出了以下建议,这似乎有效,但似乎大错特错。希望有人能给我指出正确的方向

我的数据结构是:

allData = [{
    id:1,
    info:'someinfo',
    foo :'foobar',
    bar : {...},
    baz : [{...}, {...}, {...}]
    },
    {id:2, ...},
    {id:3, ...}
    ];
我希望
allData
中的每个对象都是
$resource
对象。我还希望
baz
数组中的每个对象也是
$resource
对象

我想到的是:

var InfoService = angular.module('InfoServices', ['ngResource']);

// The inner resource
InfoService.factory('Baz', ['$resource',
    function($resource) {
      var baz = $resource('/server/baz', {});

      // custom baz methods
      baz.prototype.getBaz = function() {};

      return baz;
}]);

// Outer resource
InfoService.factory('Info', ['$resource',
    function($resource) {
      var info = $resource('/server/info', {});

      // custom data methods
      info.prototype.getInfoStats = function() {};

      return info;
}]);

// Array of resources.
InfoService.factory('AllInfo', ['$resource','Info', 'Baz',
function($resource,Info,Baz) {
  var resource = $resource('/server/allinfo', {},
                          { query : {
                              method:'get',
                              isArray:true,
                              transformResponse:function(data) {
                                var allinfo = JSON.parse(data);

                                for (var i=0;i<allinfo.length;i++) {
                                  allinfo[i] = new Info(allinfo[i]);

                                  for (var j=0;j<allinfo[i].baz.length;j++) {
                                    allinfo[i].baz[j] = new Baz(allinfo[i].baz[j]);
                                  }

                                }
                                return allinfo;
                              }
                          });
  return resource;
}]);
var InfoService=angular.module('InfoServices',['ngResource']);
//内部资源
InfoService.factory('Baz',['$resource',
职能(资源){
var baz=$resource('/server/baz',{});
//自定义baz方法
baz.prototype.getBaz=function(){};
返回baz;
}]);
//外部资源
InfoService.factory('Info',['$resource',
职能(资源){
var info=$resource('/server/info',{});
//自定义数据方法
info.prototype.getInfoStats=function(){};
退货信息;
}]);
//大量的资源。
InfoService.factory('AllInfo',['$resource','Info','Baz',',
功能($resource、Info、Baz){
var resource=$resource('/server/allinfo',{},
{查询:{
方法:'get',
伊萨雷:没错,
transformResponse:功能(数据){
var allinfo=JSON.parse(数据);
对于(var i=0;i

如果你想把所有的东西都变成一个资源,这是一个好办法。但是问问你自己……真的有必要把每个属性都变成一个单独的资源吗?把所有严格相关的属性分组到一个资源中怎么样?我问这个问题是因为我不确定这些数据对你来说代表了什么。

我不一定需要每个属性。
资源
,但数组中的每个对象都会很好。因为这样,在我的控制器中,我就可以使用
$scope.info[0].baz[1].$save
并且不必通过网络发送整个
$scope.info
对象。这有意义吗?我是Angular的新手,所以正如您所看到的,我正在努力解决这个问题。我将尝试您的建议,看看它是否对我有效。嗯,这实际上取决于您保存了多少数据,保存的频率以及目标是什么(台式机或移动设备)。我知道,根据这些因素,方法可能会有很大的不同。不过,我只编写了几个月的网络应用程序,所以我也是一个新手,我觉得我不能给出一个真正可靠的建议:)
InfoService.factory('resources', function($resource) {
    return {
        id: $resource(...),
        info: $resource(...),
        //...and so on... 
    }
})

//example usage
InfoService.controller('ctrl', function(resources) {
    this.id = resources.id.query();
})