我有一个简单的模型(为这个问题做的),它有一个名为electricGuitars的属性,该属性有一些预定义的默认值。
export default class guitarCollectionModel extends Model {
@attr('string') firstName;
@attr('string') lastName;
@attr({
defaultValue() {
return [
{
serialNumber: "sdfdsfadf",
colorCode: "dsfsadfdfa"
},
{
serialNumber: "234234234",
colorCode: "234234234323"
},
{
serialNumber: "oorprpprprpororprp",
colorCode: "rproproroprporp"
}
];
}
}) electricGuitars;
}
当我保存模型(this.model.save()
)时,Ember Data POST到我的API,并且 * 几乎 * 默认情况下所有内容都正确序列化(没有自定义序列化程序或适配器)。API期望所有属性名称都被 Jmeter 化。
{
"data": {
"attributes": {
"first-name": null,
"last-name": null,
"electric-guitars": [
{
"serialNumber": "sdfdsfadf",
"colorCode": "dsfsadfdfa"
},
{
"serialNumber": "234234234",
"colorCode": "234234234323"
},
{
"serialNumber": "oorprpprprpororprp",
"colorCode": "rproproroprporp"
}
]
},
"type": "guitar-collection"
}
}
问题是electricGuitars
属性/数组中的serialNumber
和colorCode
属性 * 尚未 * 进行非字符化。
有没有简单的方法来实现这一点?
2条答案
按热度按时间0lvr5msh1#
虽然JSON:API支持任何有效的JSON作为属性值,但Ember Data序列化程序不适用于嵌套的复杂对象。您可能会发现Ember Data Model Fragments适用于此,或嵌入式记录。
eqoofvh92#
一个选项是编写一个自定义的transform。在
serialize
函数中,您可以将其dasherize:然后指定自定义转换: