ember 数据:自定义toJSON使用的序列化器
ember data: customize serializer used by toJSON
在我使用 ember 数据的应用程序中,我有一个应用程序序列化程序(主要是为了正确处理多态关系)。但是,当我在模型实例上调用 toJSON()
时,它没有被使用,它没有被使用——而是使用默认的 JSONSerializer。
如何自定义 toJSON() 使用的序列化程序?
首先我希望我能正确理解你的问题...
好吧,如果您想获得与 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
如果您希望为特定模型自定义 toJSON 输出,您可以在 models/user.js
文件中执行以下操作:
DS.Model.extend({
toJSON: function(options){
let json = this._super(options);
// Do something with json
return json;
}
});
Ember 对象结构的魔法。在我的例子中,我必须从 toJSON
响应中删除 属性 如果它没有价值并且这有效。
在我使用 ember 数据的应用程序中,我有一个应用程序序列化程序(主要是为了正确处理多态关系)。但是,当我在模型实例上调用 toJSON()
时,它没有被使用,它没有被使用——而是使用默认的 JSONSerializer。
如何自定义 toJSON() 使用的序列化程序?
首先我希望我能正确理解你的问题...
好吧,如果您想获得与 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
如果您希望为特定模型自定义 toJSON 输出,您可以在 models/user.js
文件中执行以下操作:
DS.Model.extend({
toJSON: function(options){
let json = this._super(options);
// Do something with json
return json;
}
});
Ember 对象结构的魔法。在我的例子中,我必须从 toJSON
响应中删除 属性 如果它没有价值并且这有效。