首页 > 解决方案 > Ember:序列化任意哈希键名

问题描述

在我的model我有一个任意的散列(DS.attr()),其属性以虚线形式返回。例子,

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

我希望键名是驼峰式的。我怎样才能做到这一点?

标签: ember.jsember-data

解决方案


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

例如:

$ ember g serializer application

创建:

app/serializers/application.js

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

在您的情况下,如果您的后端返回的是 dasherized 而不是 camelCased 的属性,您可以像这样覆盖 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 模型参考中找到更多信息


推荐阅读