我的问题与此问题一致:Ember data 1.0.0: confused with per-type adapters and serializers
问题是我无法初始化每种类型的RESTSerializer,因为我需要设置 ActiveModelSerializer :
App.FooSerializer = DS.ActiveModelSerializer.extend({attrs: {}});
将关系设置为嵌入式。
所以我想为所有型号设置1个序列化器。我试图设置ApplicationSerializer
,但是当从服务器获得响应时,这并没有调用任何钩子(而且我确定我的服务器提供正确的响应):
App.ApplicationSerializer = DS.RESTSerializer.extend({
extractSingle: function(store, type, payload, id, requestType) {
return this._super(store, type, payload, id, requestType);
},
extractArray: function(store, type, payload, id, requestType) {
return this._super(store, type, payload, id, requestType);
},
normalize: function(type, property, hash) {
return this._super(type, property, hash);
}
});
设置我的适配器似乎不起作用:
var adapter = require('init/adapter');
App.ApplicationAdapter = adapter.extend({
defaultSerializer: myAdapter //I QUESS THIS IS WRONG?
});
我是否出现语法错误?还有其他建议吗?
修改
好的,我发现了我的错误,但不是一个很好的解决方案。似乎我的FooSerializer覆盖了一般的ApplicationSerializer ..
有没有办法可以设置两者? :/
答案 0 :(得分:2)
您不能同时使用这两种说法,但可以让FooSerializer
扩展您的ApplicationSerializer
,然后覆盖您希望以不同方式使用的方法。
App.FooSerializer = App.ApplicationSerializer.extend({
extractArray: function(store, type, payload, id, requestType) {
// alert each record to annoy the user
return this._super(store, type, payload, id, requestType);
},
});