所以目前我有
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
我认为您最好利用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}}
一些潜在有用的链接
属于API规范
有许多API规范
非常棒的指南,帮助我增加了对ember数据的理解
您可以将邮件属性设置为hasMany
关系。
App.Envelope = DS.Model.extend({
color: DS.attr('string'),
weight: DS.attr('string'),
name: DS.attr('string'),
mail: DS.hasMany('mail', {async:true})
});
如果您需要url为/mails?name=personsname
,最简单的方法是使用原始信封响应中的链接
{
envelopes: [
{
id: 1,
name: 'foo',
color: 'green',
weight: '12oz',
links: {
mail: '/mails?name=foo'
}
}
]
}
如果你不想走这条路,你可以创建一个自定义适配器:如何为ember.js创建自定义适配器?
你的模板看起来像这样:
{{#each mail in mails}}
{{mail.note}}
{{/each}}