2014-01-13 68 views
3

我試圖訪問嵌套的hasMany關係,期待承諾。不幸的是,我不與任何得到預期的結果如下:在Ember/Ember Data中訪問嵌套的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

如果你與async值設置爲true這樣定義你的模型:

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

則通常調用this.get('users')會返回一個promise數組,並且在您真正開始使用它時可能無法解決。

嵌套gets是棘手,特別是異步模型的複雜性,所以我建議你這樣做:

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

心煩嗎?絕對。可能有必要嗎?是啊。

+0

嗯好的。絕對煩人:( – alvincrespo

+0

是的,他們在異步方面肯定有一些工作要做,但是它能工作嗎? – blaineh