2013-03-20 75 views
1

问题1:为什么需要ember-data修订版本11属性名称的下划线版本?Ember-Data ref。 11:下划线的属性名称 - 为什么?

问题2:如果属性名称是相同的(不带下划线),是否有问题?

烬链路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' } 
}); 

感谢所有响应者! :)

回答

3

Question1:这是一个在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只会返回字符串。

+0

嗨,西里尔,谢谢你的提示。关键是: - 我有一个WCF应用程序服务器端(骆驼案例约定)。 - 客户端JavaScript(骆驼案例约定)。 - 用于通信JSON(下划线约定来自Ember)。 而一个约定转换对我来说意义不大。因此,可以保持整个系统的骆驼案例惯例而不会在Ember方面遇到麻烦? – Daniel 2013-03-21 06:59:28

+0

我已更新我的帖子,以解释如何做到这一点。 – 2013-03-21 16:11:55

相关问题