gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 08:05:29 24 4
gpt4 key购买 nike

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

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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com