ember.js - 同时使用 DS.FixtureAdapter 和 DS.RESTAdapter

标签 ember.js

我想使用两个适配器,具体取决于路线。目前我有以下商店:

if (window.USE_FIXTURES) { var my_adapter = 'DS.FixtureAdapter'; }
else                     { var my_adapter = SettingsApp.Adapter.create(); }

SettingsApp.Store = DS.Store.extend({
    revision: 12,
    adapter:  my_adapter
});

( SettinsApp.AdapterDS.RESTAdapter )

但我想要的是有两家店。是否可以逐条路由地执行此操作?有人可以提供有关如何为此配置路由器的示例吗?

最佳答案

But what I would like is to have two stores. Is it possible to do this, on a route-by-route basis?



根据设计,您永远不应该希望在您的应用程序中有多个商店。但是,存在每个型号 的 适配器的可能性。

这看起来像这样:
DS.Store.registerAdapter('App.LegacyModel', App.MyLegacyAdapter.extend({});

如果您有多个使用相同适配器的模型,您可以执行以下操作:
DS.Store.registerAdapter(['App.FooModel', 'App.BarModel'], App.MyAdapter.extend({});

然后,商店将在发出请求时使用模型类型对应的适配器。

您仍然可以使用以下语法为商店指定默认适配器:
App.Store = DS.Store.extend({
  adapter: 'DS.RESTAdapter'
});

如果您尝试加载没有为其类型指定适配器的记录,则此默认适配器将用作后备。

Is it possible to do this, on a route-by-route basis?



遵循最佳实践,如果您想使用不同于惯例查找的模型(例如,使用您的路线名称),您可以执行以下操作:
App.SomeRoute = Ember.Route.extend({
  setupController: function(controller, model) {
    controller.set('model', App.MySpecialModel.find());
  }
});

另外值得一提的是, DS.FixtureAdapter 不替换也不具有与 DS.RESTAdapter 相同的功能集,它仅用于为您的应用程序提供简单的模型数据,因此在 DS.FixtureAdapterDS.RESTAdapter 的情况下无法在适配器之间切换当您不关心与后端通信但会将您的数据存储为客户端中的“夹具”时,请使用 DS.FixtureAdapter

希望能帮助到你。

关于ember.js - 同时使用 DS.FixtureAdapter 和 DS.RESTAdapter,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17268899/

相关文章:

javascript - 无法从 Ember Controller 获取注入(inject)的 Ember 服务 - 但适用于模型和适配器

ember.js - 观察者不会触发创建的对象

ember.js - emberJS 嵌套路由 TypeError : cannot read property 'renderer' of undefined

ember.js - 如何更改 Ember 中的查询参数?

javascript - 全局监控未兑现的 promise 以显示指标

ember.js - Ember : ASync belongs to doesn't seem to resolve

javascript - EmberJS - 设置选择 View 的默认值

ember.js - Emberjs 表单、提交函数和操作帮助程序错误

javascript - 使用 ember.js 2.0 的 ember cli 应用程序基础

javascript - 错误 : Could not find module jquery (Emberjs)