所以目前我有
App.Mail = DS.Model.extend({
name: DS.attr('string'),
place: DS.attr('string'),
note: DS.attr('string')
});
App.Envelope = DS.Model.extend({
color: DS.attr('string'),
weight: DS.attr('string'),
name: DS.attr('string'),
mail: this.store.find('mail',{'name':this.get('name')})
});
我正在寻找上述功能,以便在我的模板中
{{#each envelope in envelopes}}
{{content.envelope.mail.note}}
{{/each}}
那么它会为每个循环中的每封邮件打印正确的注释吗?
我不确定我是否接近这个权利..但我不知道如何获得此功能。谢谢!B'/ P>
答案 0 :(得分:0)
您可以将mail属性设置为hasMany
关系。
App.Envelope = DS.Model.extend({
color: DS.attr('string'),
weight: DS.attr('string'),
name: DS.attr('string'),
mail: DS.hasMany('mail', {async:true})
});
如果您需要网址为/mails?name=personsname
,最简单的路线就是使用原始信封回复中的链接
{
envelopes: [
{
id: 1,
name: 'foo',
color: 'green',
weight: '12oz',
links: {
mail: '/mails?name=foo'
}
}
]
}
如果您不想沿着这条路走下去,可以创建一个自定义适配器:How do you create a custom adapter for ember.js?
您的模板看起来像这样:
{{#each mail in mails}}
{{mail.note}}
{{/each}}
答案 1 :(得分:0)
我认为你最好利用DS.belongsTo和DS.hasMany
App.Mail = DS.Model.extend({
envelope: DS.belongsTo('envelope'),
name: DS.attr('string'),
place: DS.attr('string'),
note: DS.attr('string')
});
App.Envelope = DS.Model.extend({
mail: DS.hasMany('mail') // use DS.belongsTo('mail') if 1-1 relationship
color: DS.attr('string'),
weight: DS.attr('string'),
name: DS.attr('string')
});
belongsTo将是子记录所属父级的id。 hasMany将是父拥有的子记录数组。
您还需要设置一个名为“信封”的属性。在你的控制器中,你已经创建了一个计算属性,或者作为其他一些范围的一部分访问它(例如计算别名)
然后您可以通过
访问该笔记//assumes 1-1 relationship
{{#each envelope in envelopes}}
{{envelope.mail.note}}
{{/each}}
//of if an envelope has many mails
{{#each envelope in envelopes}}
{{#each mail in envelope.mails}}
{{envelope.mail.note}}
{{/each}}
{{/each}}
一些可能有用的链接
really great guide that helped me increase my understanding of ember-data