2014-01-13 6 views
3

약속을 기대하며 중첩 된 hasMany 관계에 액세스하려고합니다. 불행하게도 나는 어떤으로 예상되는 결과를 얻을 수없는 다음이 같은 true로 설정 async 값으로 모델을 정의한 경우Ember/Ember 데이터에서 중첩 된 hasMany 관계에 액세스

// Tried the following 
this.get('users.emails') 
this.get('[email protected]') 
this.get('users').get('emails') 

// Trying to avoid this: 
this.get('users'). 
    then(function(users) { 
    var arr = Ember.A(); 

    users.forEach(function(user, index){ 
     arr.pushObject(user.get('emails')); 
    }); 

    return array; 
    }). 
    then(function(emailArr){ 
    // then do something 
    }); 

// Preferable 
this.get('users.emails').then(function(emails){ 
    // then do something 
}); 

답변

4

:

users: DS.hasMany('user', {async: true}) 

다음 일반적으로 this.get('users') 전화는 것입니다 약속 배열을 반환하고, 실제로 그것을 사용하기 시작할 때까지는 해결되지 않을 수도 있습니다.

중첩 gets

특히 비동기 모델의 합병증으로, 까다로운, 그래서 당신이 할 추천 :

this.get('users').then(function(users) { 
    users.get('emails').then(function(emails) { 
     // do stuff with emails. 
    }); 
} 

성가신을? 전혀. 아마 필요할거야? 네.

+0

괜찮습니다. 확실히 성가신 : ( – alvincrespo

+0

그래, 그들은 확실히 비동기 측면에서 할 일이있다. 그것은 작동합니까? – blaineh

관련 문제