2014-07-01 4 views
-1

중첩 된 $resource을 만드는 방법을 알아 내려고하고 있습니다. 나는 다음과 같은 것을 생각해 낸다. 누군가를 바라는 것은 올바른 방향으로 나를 가리킬 수 있습니다.

내 데이터 구조는 다음과 같습니다

allData = [{ 
    id:1, 
    info:'someinfo', 
    foo :'foobar', 
    bar : {...}, 
    baz : [{...}, {...}, {...}] 
    }, 
    {id:2, ...}, 
    {id:3, ...} 
    ]; 

가 나는 $resource 객체로 allData에서 각 개체를하고 싶습니다. 나는 또한 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; 
}]); 

내가 지독하게 잘못 said..seems 마찬가지로, 위 달성에 각 방법은 무엇입니까?

답변

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

모든 것을 리소스로 만들고 싶다면 이것이 최선의 방법입니다. 그러나 스스로에게 묻습니다 ... 모든 속성을 별도의 자원으로 만드는 것이 정말로 필요한가요? 엄격하게 관련된 모든 속성을 리소스에서 그룹화하는 것은 어떻습니까? 나는이 데이터가 당신에게 미칠 수있는 것이 확실하지 않기 때문에 물어 본다.

+0

모든 속성이'resource' 일 필요는 없지만 배열의 각 객체는 좋을 것입니다. 왜냐하면 내 컨트롤러에서'$ scope.info [0] .baz [1]. $ save'을 수행 할 수 있었고 전체'$ scope.info' 객체를 전선으로 보낼 필요가 없었기 때문입니다. 말이 돼? 저는 앵귤러를 처음 접했으므로 여러분이 볼 수있는 것처럼 고민하고 있습니다. 나는 당신의 제안을 시도하고 그것이 나를 위해 작동하는지 확인합니다. – fbynite

+0

글쎄, 그것은 얼마나 많은 데이터를 저장하고 있는지, 얼마나 자주, 그리고 타겟 (데스크톱 또는 모바일)이 무엇인지에 달려 있습니다. 나는 이러한 접근법이 이러한 요인들에 따라 매우 다를 수 있음을 안다. 아직도, 나는 몇 달 동안 만 webapps를 프로그래밍 해왔다. 그래서 나는 신참이다. 나는 그 의미에서 정말로 신뢰할만한 조언을 줄 수 있다고 생각하지 않는다. :) – link

관련 문제