Ember.js 尝试为DS.Store创建自定义适配器时,断言失败
刚刚升级到ember 1.0和最新的ember数据。现在,当我尝试创建我的存储时,我得到了这个错误 断言失败:您试图将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() }); 您必须通过类本身:
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({
// ...
});