首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在ember-data中,Adapter、Fixture Adapter和REST Adapter有什么不同?

在ember-data中,Adapter、Fixture Adapter和REST Adapter有什么不同?
EN

Stack Overflow用户
提问于 2012-08-11 07:26:23
回答 1查看 3.6K关注 0票数 7

Adapter、Fixture Adapter和REST Adapter之间的区别是什么,以及何时使用它们?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2012-08-11 12:41:05

使用DS.FixtureAdapter (或DS.FixtureAdapter.create()),而不是(还没有?)注意与后端通信,但会将数据存储为客户端中的“fixture”。一旦声明了一个模型:

代码语言:javascript
复制
App.Thing = DS.Model.extend({
  name: DS.attr('string'),
  // ...
});

您可以定义您的装置:

代码语言:javascript
复制
App.Thing.FIXTURES = [
  {
    id: 1,
    name: '...',
    // ...
  },
  {
    id: 2,
    name: '...',
    // ...
  },
];

然后你可以对它们使用ember data方法(例如App.Thing.findAll()等)。并对它们进行操作,但当然它只会在页面(即javascript环境)存在的时间内持续存在。

DS.RestAdapter虽然显然仍在开发中,但仍然可以使用,其设计目的是很好地适应Rails API,但可能会被修改/扩展以与您正在使用的任何RESTful API一起工作。它知道通过调用/things来处理App.Thing.findAll(),并通过调用/things/12来处理App.Thing.find(12)。这是一个相对路径,附加在传入的名称空间参数后面:

代码语言:javascript
复制
App.store = DS.Store.create({
  revision: 4,
  adapter: DS.RestAdapter.create({
    namespace: 'http://what.ever/api/v1'
  })
});

DS.Adapter相当抽象:前面提到的内置适配器的超类。如果这两个都不适合您的需求,那么您很可能希望实现您自己的:

代码语言:javascript
复制
App.adapter = DS.Adapter.create({
  find: function(store, type, id) {
    // ...
    jQuery.get( ... , function(data) {
      store.load(type, id, data);
    });
  },
  createRecord: function(store, type, model) {
    // ...
    jQuery.post( ... , function(data) {
      store.didCreateRecord(model, data);
    });
  },
  // ...
});
App.store = DS.Store.create({
  revision: 4,
  adapter: App.adapter
});

希望这能有所帮助。有关更多信息,请参阅https://github.com/emberjs/data上的自述文档。

票数 22
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/11910496

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档