ember数据:自定义toJSON使用的序列化程序

时间:2015-01-09 05:00:34

标签: serialization ember.js ember-data

在我的ember-data-using应用程序中,我有一个应用程序序列化程序(主要是为了正确处理多态关系)。但是,当我在模型实例上调用toJSON()时未使用它,而不使用它 - 而是使用默认的JSONSerializer。

如何自定义toJSON()使用的序列化程序?

2 个答案:

答案 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响应中移除一个属性,如果它没有值,这就有效。