store.find in Ember Model (DS)



所以目前我有

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}}

最新更新