有没有办法使用不同于我的JSON中的属性名称?

时间:2013-03-05 00:19:04

标签: javascript model-view-controller ember.js javascript-framework ember-data

我有以下JSON(简单示例):

{
  id:        101,
  firstName: "John",
  surname:   "Doe"
}

但我希望我的模型使用lastName代替surname。这样的事情,也许是:

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

我可以发誓我在某个地方看到了如何做到这一点,但对于我的生活,却找不到它。我也没有在余烬数据源中找到任何明显的东西。

我尝试在属性选项中设置keynameidaliasmap,但似乎都没有做到这一点。有没有办法做到这一点?

1 个答案:

答案 0 :(得分:7)

您应该可以通过The REST Adapter执行此操作。该文档包含在Underscored Attribute Names下映射“不规则键”的示例:

  

可以在适配器上映射不规则键。如果JSON的密钥为lastNameOfPerson,并且所需的属性名称只是lastName,请通知适配器:

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

在你的情况下:

DS.RESTAdapter.map('App.Person', {
    lastName: { key: 'surname' }
});

值得注意的是,当模型具有first_name时,Ember期望JSON具有firstName。因此,这可能还需要明确地改编