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 响应中删除 属性 如果它没有价值并且这有效。