2012-09-17 4 views
1

다음과 같이 나는 중첩 된 데이터 구조를 가지고뿐만 아니라Ember.js는 ArrayController 및 모델을 중첩

Job:{ 
    JobId: 1, 
    NumberTrackr: 2, 
    Trackrs: [ 
       1 : { TaskTrackrID: a, 
         NumberSlots:1, 
         slots: [ 
          slot1: {uniqueId:foo, you: get, the:[point, by, now]} 
           ] 
        }, 
       2 : { TaskTrackrID: b, 
         NumberSlots:1, 
         slots: [ 
          slot1: {uniqueId:bar, you: get, the:[point, by, now]} 
           ] 
        } 
      ] 
} 

을 그리고 내 응용 프로그램 (특정 Trackr의 '어린이'foo는 속성의 합을 계산)이 데이터 계층 구조를 사용 각 데이터 수준은 전체적으로 (예 : '상위'TaskTracker와 관계없이 모든 슬롯의 콘텐츠에서 통계 계산).

Im new to Ember,하지만 필자는 각 개체 수준 (TaskTrackr, Slot 등)에 대한 모델을 만들려고했습니다. 이 모델은 (arraycontroller?를 사용하는) 일종의 하위 모델 배열과 함께 위에 표시된 모든 속성으로 구성됩니다. 상기 서브 모델은 또한 서브 모델의 그들 자신의 어레이뿐만 아니라 속성을 갖는다. 상위 수준 개체는 하위 개체에서 계산 된 속성을 계산할 수 있어야합니다. 또한 각 레벨에 전체적으로 액세스하여 특정 속성을 수정할 수 있어야합니다.

레벨을 기준으로뿐만 아니라 나무로도이 데이터에 액세스 할 수있는 코드는 어떻게 생깁니 까?

당신의 도움이

답변

2

Ember Data 한 번 봐 주셔서 너무 감사드립니다. 그것은 이러한 유형의 관계를 지원합니다.

App.Job = DS.Model.extend({ 
    trackers: DS.hasMany('App.Tracker') 
}) 

App.Tracker = DS.Model.extend({ 
    job: DS.belongsTo('App.Job'); 
}) 

// ... and so on 

var job = App.Job.createRecord(); 
job.get('trackers').pushObject(App.Tracker.createRecord()); 

메모하기 만하면됩니다. ArrayController을 사용하여 언급 했으므로 Ember 응용 프로그램 내부에서 사용하게 될 것입니다. 그러나 데이터/관계를 모델링 할 때는 컨트롤러를 사용하지 않습니다. 위에 붙여 넣은 것을 할 수 있어야합니다. DS.Model

+0

답장을 보내 주셔서 감사합니다. 귀하의 코드가 계층 구조를 설정하지만 모든 트래커에 액세스하는 방법은 무엇입니까? – user1483714

+0

직업 :''job.get ('추적자')''. 세계의 모든 추적기 :''App.store.findAll (App.Tracker)''. Ember Data github 페이지를 읽어보십시오. 많은 정보가 있습니다. – Ryan

관련 문제