在我的ember-data-using应用程序中,我有一个应用程序序列化程序(主要是为了正确处理多态关系)。但是,当我在模型实例上调用toJSON()
时未使用它,而不使用它 - 而是使用默认的JSONSerializer。
如何自定义toJSON()使用的序列化程序?
答案 0 :(得分:1)
首先,我希望我能正确理解你的问题......
好吧,如果您想获得与ApplicationSerializer
中相同的结果,只需在模型中调用this.serialize()
。
如果您想绝对使用toJSON
方法而不覆盖整个应用的默认DS.Model
,您仍然可以制作类似的内容:
App.CustomModel = DS.Model.extend({
toJSON: function(){
return this.serialize();
}
});
然后让所有相关模型扩展此CustomModel
App.Color = App.CustomModel.extend({
name : DS.attr("string")
});
这是一个有效的jsbin
答案 1 :(得分:0)
如果您要为特定型号自定义toJSON输出,可以在models/user.js
文件中执行以下操作:
DS.Model.extend({
toJSON: function(options){
let json = this._super(options);
// Do something with json
return json;
}
});
Ember对象结构的魔力。在我的情况下,我必须从toJSON
响应中移除一个属性,如果它没有值,这就有效。