Ember-Data ref。 11:强调属性名称 - 为什么?

时间:2013-03-20 19:19:44

标签: ember-data

问题1 :为什么需要将ember-data revision 11作为属性名称的下划线版本?

问题2 :如果属性名称相同(没有下划线),这是一个问题吗?

Ember-Link http://emberjs.com/guides/models/the-rest-adapter/

模型

App.Person = DS.Model.extend({
    firstName: DS.attr('string'),
    lastName: DS.attr('string'),

    isPersonOfTheYear: DS.attr('boolean')
});

JSON

{
   "person": {
        "first_name": "Barack",
        "last_name": "Obama",
        "is_person_of_the_year": true
    }
}

映射

App.Person = DS.Model.extend({
    lastName: DS.attr('string')
});
DS.RESTAdapter.map('App.Person', {
    lastName: { key: 'lastNameOfPerson' }
});

感谢所有响应者! :)

1 个答案:

答案 0 :(得分:3)

问题1 :它是JS中的一种惯例,具有驼峰式属性。 有关JSON有效内容,请参阅此JSON Naming Convention

不确定理解你的第二个问题。

<强>问题2:

如果您想保留JSON格式,您可以在序列化程序代码中解释2个选项https://github.com/emberjs/data/blob/master/packages/ember-data/lib/system/serializer.js#L58

  • 使用适配器map API
  • 逐个重新映射它们
  • 您可以通过实施keyForAttributeName
  • 来确定序列化表单中使用的属性名称

在您的情况下,您可能希望拥有继承自RESTSerializer的自己的序列化程序。见https://github.com/emberjs/data/blob/master/packages/ember-data/lib/serializers/rest_serializer.js#L4

keyForAttributeName只会返回字符串。