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

KOG*_*OGI 4 javascript model-view-controller javascript-framework ember.js ember-data

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

{
  id:        101,
  firstName: "John",
  surname:   "Doe"
}
Run Code Online (Sandbox Code Playgroud)

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

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

我可以发誓我在某个地方看到了如何做到这一点,但对于我的生活,找不到它.我也没有在ember-data源中找到任何明显的东西.

我试过设置key,name,id,alias,并map在属性选项,但没有人可以做的伎俩.有没有办法做到这一点?

Jon*_*ski 7

您应该可以通过REST适配器执行此操作.该文档包含在Underscored Attribute Names下映射" 不规则键 " 的示例:

可以在适配器上映射不规则键.如果JSON具有密钥lastNameOfPerson,并且所需的属性名称是简单的lastName,则通知适配器:

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

在你的情况下:

DS.RESTAdapter.map('App.Person', {
    lastName: { key: 'surname' }
});
Run Code Online (Sandbox Code Playgroud)

也值得注意的是,Ember期待JSON能够拥有first_name该模型firstName.因此,这可能还需要明确调整.