Ember: 序列化任意哈希键名

Ember: Serialize arbitrary hash key names

在我的 model 中,我有一个任意散列 (DS.attr()),其属性以破折号形式返回。例如,

{
  'lorem-ipsum': 'Some value',
  'dolor-sit': 'Some value'
}

我希望键名采用驼峰式命名。我怎样才能做到这一点?

是的,你可以写下你的custom transform

ember-cli 中使用 ember g transform my-custom-transform

然后你写DS.attr('my-custom-transform').

您可以(并且应该)为您的数据请求使用自定义序列化程序。

例如:

$ ember g serializer application

创建:

app/serializers/application.js

如果您的服务器返回的属性使用不同的约定,您可以使用序列化程序的 keyForAttribute() 方法将模型中的属性名称转换为 JSON 有效负载中的键。

在您的情况下,如果您的后端返回的属性是破折号而不是驼峰式,您可以像这样覆盖 keyForAttribute 方法。

// app/serializers/application.js

import { camelize } from '@ember/string';
import DS from 'ember-data';

export default DS.JSONAPISerializer.extend({
  keyForAttribute(attr) {
    return camelize(attr);
  }
});

您可以在 Ember Models Reference

找到更多关于此的信息