我正在使用ember数据从远程服务器获取数据。 我的模型定义如下 -
App.Publisher = DS.Model.extend({
name: DS.attr('string'),
appName: DS.attr('string'),
url: DS.attr('string'),
appType: DS.attr('number'),
streamType: DS.attr('number'),
sslEnabled: DS.attr('number'),
protocol: DS.attr('number'),
});
服务器的响应采用以下格式 -
{
id: 1,
name: "aurus",
url: "1111",
app_name: "superprofs",
app_type: 1,
stream_type: 1,
ssl_enabled: 1,
protocol: 1,
created_at: "2014-08-08T10:52:40.000Z",
updated_at: "0000-00-00 00:00:00"
},
但由于来自server
的密钥为underscore
格式且我的model
密钥为camelCase
,
来自服务器的值未设置。
如何使我的模型键适应服务器发送的数据格式(underscore
),然后当我在ember js中调用save / create / update时,我希望将数据发送到underscore
格式,因为我的服务器API期望采用下划线格式的数据
答案 0 :(得分:1)
对于遇到同样问题的人,我使用ActiveModelAdapter
我让我的ApplicationAdpater从DS.ActiveModelAdapter扩展。
App.ApplicationAdapter = DS.ActiveModelAdapter.extend({});
答案 1 :(得分:0)
您需要创建App.PublisherSerializer
,这取决于您使用的适配器应该来自DS.RESTSerializer
,DS.ActiveModelSerializer
或DS.JSONSerializer
。
您需要覆盖serialize和normalizePayload挂钩以执行您需要的操作。
请记住,ember数据需要有一个带有记录类型的根密钥,在normalizePayload钩子中你应该最终返回一个看起来像
的对象{
publishers: [{
id: 1,
name: "aurus",
url: "1111",
appName: "superprofs",
appType: 1,
streamType: 1,
sslEnabled: 1,
protocol: 1,
createdAt: "2014-08-08T10:52:40.000Z",
updatedAt: "0000-00-00 00:00:00"
}]
}
这是一个显示如何使用normalizePayload
钩子的文件夹:http://emberjs.jsbin.com/mucici/1/edit