5

我正在为一个 API 使用基本适配器:

App.Store = DS.Store.extend({
    revision: 12,
    adapter: DS.BasicAdapter.create()
});

假设我需要从其他服务检索一些数据,但使用 REST API:

App.Store2 = DS.Store.extend({
    revision: 12,
    adapter: DS.RESTAdapter.create()
});

那怎么用store2呢?还是有另一种解决此类问题的方法?

4

3 回答 3

3

您可以添加两个不同的适配器,无需创建多个商店。

对于余烬 2:

可以通过将您的适配器类放在应用程序的 app/adapters/ + 模型名称 + .js 文件中来创建特定于模型的适配器。

来源:DS.Adapter 类

于 2015-09-11T01:26:44.480 回答
2

当您需要使用不同的 Store 时,请定义您的 Store,然后指定要检索的 Model:

App.Store = DS.Store.extend({
  revision: 12,
  adapter: DS.BasicAdapter.create()
});

App.store2 = DS.Store.create({
  revision: 12,
  adapter: DS.RESTAdapter.create()
});

// retrieving from custom store
var myModelObject = App.store2.find(App.MyDifferentModel, 1);

// retrieving from defaultStore is implicit for the Models defined
var post = App.Post.find(1);

希望能帮助到你

于 2013-05-03T22:29:05.513 回答
0

这就是我使上述示例工作的方式,请注意我使用ember-cli. 我没有使用DS.RESTAdapter.create()或者在我的情况下使用 ImDS.LSAdapter创建我的商店,而是在这样的初始化程序中创建我的商店:

app.LsStore = DS.Store.extend({
  adapter: '-ls',
});

app.register('store:lsstore', app.LsStore);
app.register('adapter:-ls', DS.LSAdapter);

这基本上在容器上注册了 alsstore和 a 。adapter:-ls然后我可以将我的商店注入应用程序的routeorcontroller中,这将尝试使用adapter:-ls.

于 2015-06-15T01:09:21.260 回答