Ember.js 尝试为DS.Store创建自定义适配器时,断言失败

Ember.js 尝试为DS.Store创建自定义适配器时,断言失败,ember.js,ember-data,Ember.js,Ember Data,刚刚升级到ember 1.0和最新的ember数据。现在,当我尝试创建我的存储时,我得到了这个错误 断言失败:您试图将adapter属性设置为DS.adapter的实例,其中它应该是名称或工厂 做这件事的新方法/正确方法是什么?您在某些地方有: adapter = MyAdapter.create(); ... App.Store = DS.Store.extend({ revision: 12, adapter: adapter.create() }); 您必须通过类本身:

刚刚升级到ember 1.0和最新的ember数据。现在,当我尝试创建我的存储时,我得到了这个错误

断言失败:您试图将
adapter
属性设置为
DS.adapter
的实例,其中它应该是名称或工厂


做这件事的新方法/正确方法是什么?

您在某些地方有:

adapter = MyAdapter.create();
...
App.Store = DS.Store.extend({
    revision: 12,
    adapter: adapter.create()
});
您必须通过类本身:

App.Store = DS.Store.extend({
    revision: 12,
    adapter: MyAdapter
});
因此,ember将能够在MyAdapter中注入容器。

尝试以下操作:

App.MyFancyAdapter = DS.RESTAdapter.extend();

App.Store = DS.Store.extend({
  adapter: 'MyFancy'
});

基本上,您使用名称减去“adapter”的字符串引用适配器。请参阅Ember Data 1.0.beta.1中的,您不再需要从
DS.Store扩展
。只需从
DS.model
扩展您的模型,并从
DS.RESTAdapter
扩展您的适配器即可。如果您根据以下命名约定命名模型和适配器(以及序列化程序),它们将自动连接

App.Post = DS.Model.extend({
  // ...
});

App.PostAdapter = DS.RESTAdapter.extend({
  // ...
});

还可以查看Ember Data 1.0.beta.1转换参考:

Marcio与我的代码示例和您的代码示例没有区别。你能解释一下吗?抱歉@Rob输入得太快了,忘了从MyAdapter中删除create。只要使用
adapter:MyAdapter
就可以了。是的,可以。它现在采用类型而不是实例。这将是您键入的所有适配器都将遵循的“基本适配器”。确定。这就是你想要的吗?你也可以把App.MyFancyAdapter放进去。它不需要是字符串,这是真实的lulezi,但是我有一些功能需要为所有适配器共享。我相信在应用商店中设置的内容将成为所有类型适配器的“基本”类型。关于
DS.RestAdapter.reopen()
?是的,但只有当您不想使用默认的
DS.RestAdapter
作为默认适配器时,才会这样做。
App.Post = DS.Model.extend({
  // ...
});

App.PostAdapter = DS.RESTAdapter.extend({
  // ...
});