2013-03-20 61 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

相關問題