2014-12-25 3 views
0

직원들에게 서로 의견을 나눌 수있는 간단한 플랫폼을 설정하려고합니다. ember-data (베타 브랜치)를 사용하고 있습니다.ember-data와의 단방향 관계

모델 :이 (simplyfied)

App.Employee = DS.Model.extend({ 
    name: DS.attr() 
}) 

App.Feedback = DS.Model.extend({ 
    text: DS.attr(), 
    employee: DS.belongsTo('employee', {async: true}) 
}) 

라우터 :

App.Router.map(function(){ 
    this.resource('profile', {path: 'profile/profile_id'}) 
}) 

App.ProfileRoute = Ember.Route.extend({ 
    model: function(params){ 
     return this.store.find('employee', params.profile_id); 
    } 
}) 

데이터 :

App.Employee.reopenClass({ 
    FIXTURES: [ 
    { id: 1, name: 'Trek'}, 
    { id: 2, name: 'Tom'} 
    ] 
}); 

App.Feedback.reopenClass({ 
    FIXTURES: [ 
    { id: 1, text: 'Topic1', employee: 1}, 
    { id: 2, text: 'Topic2', employee: 2}, 
    { id: 3, text: 'Topic3', employee: 1}, 
    { id: 4, text: 'Topic4', employee: 2} 
    ] 
}); 

나는 문양을 얻을 수 없다 t 개의 피드백을 템플릿 profile에 표시 할 수 있습니다.

템플릿 :

{{#each feedback in model.feedback}} 
    {{feedback.text}} 
{{/each}} 

나는 내가 잘못 무엇을 알아낼 수 없습니다.

feedbacks: DS.hasMany('feedback') 아래에 App.Employee을 입력해야합니까? 또는 컨트롤러를 통해이 작업을 수행해야합니까? ('PROFILE_ID'전에 놓친 콜론) 라우터 설명의 오타에게 있습니다

답변

1
  1. 는 다음과 같은 경우

    App.Router.map(function() { 
        this.resource('profile', {path: 'profile/:profile_id'}) 
    }) 
    
  2. 예, 당신은, 직원 및 피드백 모델 사이에 일대 다 관계를 설명해야 직원 모델에서 '피드백'목록에 액세스하려고합니다.

업데이트 : 당신은 직원들의 피드백 모델을 분리하려면 , 당신은 컨트롤러 모델과 그들 사이의 관계를 이동할 수 있습니다.

App.ProfileController = Em.ObjectController.extend({ 
    feedbackList: function() { 
     return this.store.find('feedback', { employee: this.get('model.id') }); 
    }.property('model.id') 
}); 

템플릿에 해당 필드 (feedbackList)를 사용 :

{{#each feedback in feedbackList}} 
    {{feedback.text}} 
{{/each}} 
+0

그러나 저를 필요로하지 것 내기구 직원의 의견의 목록을 가지고

그것은처럼 보일 수 있습니다 ? – fonorobert

+0

피드백의 Fixture에서 ID에 해당하는 피드백 ids 배열 (예 :'feedbacks : [1,2,3]')이 필요합니다. – Microfed

+0

이것을 피할 방법이 있습니까? Employee가 피드백에 대해 알 필요가 없도록 일을 설정하고 싶습니다. – fonorobert