英文原文:http://emberjs.com/guides/models/the-fixture-adapter/

当开发客户端应用时,服务端可能还没有完成对应API的开发。使用FixtureAdapter可以先进行Ember应用开发,然后切换到其他的适配器来使用API,并且这个切换并不需要改变应用的代码。

开始学习

使用夹具适配器需要完成三步简单的配置:

  1. 创建一个新的、使用夹具适配器的store并将其关联到应用。
  2. 使用DS.Model.extend来定义模型。
  3. 将夹具(样本数据)关联到对应的模型类。

创建夹具适配器

只需将其定义为Ember.Application应用的ApplicationAdapter属性即可。

  1. var App = Ember.Application.create();
  2. App.ApplicationAdapter = DS.FixtureAdapter;

定义模型

查看定义模型一章可以获取更多详细的关于定义模型的介绍,作为简单的示例,这里定义一个编写Ember文档的人员的模型。

  1. App.Documenter = DS.Model.extend({
  2. firstName: DS.attr( 'string' ),
  3. lastName: DS.attr( 'string' )
  4. });

关联夹具到模型类

关联夹具非常之简单。只需要将一个Javascript对象集合赋值给模型的FIXTURES属性即可:

  1. App.Documenter.FIXTURES = [
  2. { id: 1, firstName: 'Trek', lastName: 'Glowacki' },
  3. { id: 2, firstName: 'Tom' , lastName: 'Dale' }
  4. ];

这就是所有的配置过程了,现在便可以施工用查找记录一章中得方法了。例如:

  1. App.DocumenterRoute = Ember.Route.extend({
  2. model: function() {
  3. return this.store.find('documenter', 1); // returns a promise that will resolve
  4. // with the record representing Trek Glowacki
  5. }
  6. });

命名惯例

REST Adapter不同,夹具适配器并不做任何命名惯例的猜测。如同上例中所示,如果在DS.Model.extend中定义了一个firstName属性,那么需要在夹具样本数据中使用firstName来表示该属性。

更重要地是,需要确保夹具样本数据中得每一条记录都有一个唯一的标识。缺省情况下,Ember Data假定该标识为id。如果没有重定义主键标识名,又未在记录中提供一个id,那么夹具适配器会抛出一个错误。