我正在为一个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
呢?还是有另一种方法可以解决这样的问题吗?
答案 0 :(得分:3)
您可以添加两个不同的适配器,无需创建多个商店。
对于Ember 2:
可以通过将适配器类放在应用程序的app / adapters / + model-name + .js文件中来创建特定于模型的适配器。
答案 1 :(得分:2)
当您需要使用其他商店时,请定义商店,然后指定要检索的模型:
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);
希望有所帮助
答案 2 :(得分:0)
这是我使上述示例工作的方式,请注意我使用ember-cli
。
不是使用DS.RESTAdapter.create()
创建我的商店,或者在我的情况下,我使用DS.LSAdapter
,我在这样的初始化程序中创建我的商店:
app.LsStore = DS.Store.extend({
adapter: '-ls',
});
app.register('store:lsstore', app.LsStore);
app.register('adapter:-ls', DS.LSAdapter);
这基本上在容器上注册lsstore
和adapter:-ls
。然后我可以将我的商店注入应用程序的route
或controller
,这将尝试使用adapter:-ls
找到适配器。