Reputation: 6373
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?
Upvotes: 5
Views: 2831
Reputation: 4967
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
Upvotes: 3
Reputation: 303
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
.
Upvotes: 0
Reputation: 23322
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
Upvotes: 2