Skip to content

Latest commit

 

History

History
40 lines (26 loc) · 1.93 KB

Chapter13: Modeling Leads.md

File metadata and controls

40 lines (26 loc) · 1.93 KB

Modeling Leads

我们会使用Ember Data来处理数据,在Hello World应用中我们已经安装了它,所以我们不需要做任何事情就可以开始使用它了.虽然Ember有一些不同的数据适配器,但是Ember Data是标准.

在Rails中我们有一个Lead模型,Ember也需要知道Lead,要让Ember也知道,我们要在Ember中创建一个Lead模型.Ember Data给了我们需要我们扩展的DS.Model对象:

// app/assets/javascripts/models/lead.js
App.Lead = DS.Model.extend({
  firstName: DS.attr('string'),
  lastName: DS.attr('string'),
  email: DS.attr('string'),
  phone: DS.attr('string'),
  status: DS.attr('string', { defaultValue: 'new' }),
  notes: DS.attr('string'),
})

Ember会自动读取json api中的first_namefirstName,以及其他剩余的特性(attribute).在这里我们只使用了string数据类型,其他你可以使用的还有number, boolean, 和date.

关于DS.Model

DS.Model提供了各种有用的方法和属性,这里有一些你经常会用到的方法:

model.save() // save changes to the database
model.rollback() // wipe clean any unsaved changes
model.destroyRecord() // delete a record from the database

注意DS.Model继承自Ember.Object,所以所有你学习的Ember对象相关的内容都可以用在 DS.Model.例如,你可以像这样设定DS.Model实例的任意的属性:

model.set('myProperty', 'hello!');

DS.Model实例和常规的Ember对象实例最大的不同是,你不能以同样的方式创建它们.创建的一个新的DS.Model实例必须通过store:

this.store.createRecord('modelName', { firstName: 'John', lastName: 'Snow' });

这是因为store封装了你的应用中所有活动的DS.Model实例的内容,并且当你创建模型实例时store去做一些额外的工作.