最新消息:雨落星辰是一个专注网站SEO优化、网站SEO诊断、搜索引擎研究、网络营销推广、网站策划运营及站长类的自媒体原创博客

javascript - How to use two different adapters at the same time in Ember.js application? - Stack Overflow

programmeradmin0浏览0评论

I'm using basic adapter for one API:

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

Lets say I need to retrieve some data from an other service but using REST API:

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

How to use store2 then? Or is there another approach to solve issue like this?

I'm using basic adapter for one API:

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

Lets say I need to retrieve some data from an other service but using REST API:

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

How to use store2 then? Or is there another approach to solve issue like this?

Share Improve this question asked May 3, 2013 at 21:56 Wojciech BednarskiWojciech Bednarski 6,3939 gold badges50 silver badges75 bronze badges
Add a ment  | 

3 Answers 3

Reset to default 3

You can add two different adapters, no need to create multiple stores.

For Ember 2:

Model-specific adapters can be created by putting your adapter class in an app/adapters/ + model-name + .js file of the application.

Source: DS.Adapter Class

When you need to use a different Store, define your Store and then specify the Model you want to retrieve:

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);

hope it helps

This is how I made the above example work, note Im using ember-cli. Instead of creating my store with the DS.RESTAdapter.create(), or in my case, Im using DS.LSAdapter, I create my store in a initializer like this:

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

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

This basically registers a lsstore and a adapter:-ls on the container. Then I can inject my store into the application's route or controller, and this will try to find the adapter using adapter:-ls.

发布评论

评论列表(0)

  1. 暂无评论