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();
})