Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/384.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 余烬数据未正确序列化数组中对象的属性名称_Javascript_Ecmascript 6_Ember.js_Ember Data - Fatal编程技术网

Javascript 余烬数据未正确序列化数组中对象的属性名称

Javascript 余烬数据未正确序列化数组中对象的属性名称,javascript,ecmascript-6,ember.js,ember-data,Javascript,Ecmascript 6,Ember.js,Ember Data,我有一个简单的(针对这个问题)模型,它有一个名为electricGuitars的属性,预定义了一些默认值 export default class guitarCollectionModel extends Model { @attr('string') firstName; @attr('string') lastName; @attr({ defaultValue() { return [ { serialNumber:

我有一个简单的(针对这个问题)模型,它有一个名为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()
)时,会将成员数据发布到我的API中,默认情况下几乎所有内容都已正确序列化(没有自定义序列化程序或ADPATER)。API希望所有属性名都被Dasherise化

{
  "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
属性未被dasherise化

{
  "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"
  }
}

有没有一种简单的方法可以实现这一点?

虽然JSON:API可以将任何有效的JSON作为属性值,但Ember数据序列化器不适用于嵌套的复杂对象。您可能会发现这是有用的,或者。

当JSON:API将任何有效的JSON作为属性值时,Ember数据序列化器不适用于嵌套的复杂对象。您可能会发现这很有用,或者。

一个选项是编写自定义。在
序列化
函数中,您可以dasherize:

序列化(反序列化){
返回Object.fromEntries(Object.entries(反序列化)
.map(([key,val])=>[dasherize(key,val]))
)
}
然后指定自定义变换:

@attr('my-custom-transform', {

一种选择是编写一个自定义的。在
序列化
函数中,您可以dasherize:

序列化(反序列化){
返回Object.fromEntries(Object.entries(反序列化)
.map(([key,val])=>[dasherize(key,val]))
)
}
然后指定自定义变换:

@attr('my-custom-transform', {