2012-12-31 168 views
3

Ember的新手,我無法弄清楚如何通過關聯的ember-data模型或簡單地作爲json對象來呈現嵌套選項。在Ember.js中渲染嵌套對象

JSON看起來是這樣的:

contact: { 
     first_name, 
     last_name, 
     emails: [{email1...}, {email2...}] 
} 

尋找最簡單的解決方案,我在車把模板試過這樣:

{{#each emails}} 
    ... 
{{/each}} 

嘗試一種更先進的解決方案,我創建了最終將需要遵循餘燼數據模型:

App.Contact = DS.Model.extend({ 
    first_name: DS.attr('string'), 
    last_name: DS.attr('string'), 
    company: DS.attr('string'), 
    emails: DS.hasMany('Rainmaker.Email') 
}); 

App.Email = DS.Model.extend({ 
    contact_id: DS.attr('number'), 
    email_address: DS.attr('string'), 
    emails: DS.belongsTo('Rainmaker.Contact') 
}); 

這似乎是一些工作在(App.Email:ember517呈現在屏幕上),但它看起來仍然試圖ping服務器來獲取電子郵件地址,我已經讓他們懶加載。

我不知道下一步該去哪裏,並且非常感謝我忽略的任何文檔指南或鏈接。謝謝。

+0

a = App.Contant.find(1); a_emails = a.get('emails');應該返回一組關聯的電子郵件 –

+0

您使用的是什麼版本的ember-data?你可能想看看這個提交:https://github.com/emberjs/data/commit/b5d7c478e79aa9706e0196b8769b7ef67bb26fc4 – joostdevries

+0

謝謝你的建議。我實際上最終再次看了一遍文檔,並得到了像文檔建議那樣的「sideloaded」的JSON響應。所以再次感謝我指點回到源頭。 – user1938736

回答

2

On 28. dec Ember團隊已經包含了對嵌入式記錄的支持。如果您在頁面的大約1/3處查看https://github.com/emberjs/data,它會爲您提供一些相關指示。

就你的情況而言,只需將emails: DS.hasMany('Rainmaker.Email')更改爲emails: DS.hasMany('Rainmaker.Email',{embedded:true})即可根據文檔進行操作。