DaZ*_*Zzz 5 json ember.js ember-data
我从API获得了一个具有以下格式的JSON
[
{
"id": 45,
"name": "Pasta",
"_order": 0,
"is_hidden": null,
"is_list": false
},
{
"id": 46,
"name": "Salads",
"_order": 1,
"is_hidden": null,
"is_list": false
},
{
"id": 47,
"name": "Dessert",
"_order": 2,
"is_hidden": null,
"is_list": false
}
];
Run Code Online (Sandbox Code Playgroud)
我看到它的标准RESTAdapter格式无效,我需要先放置模型的名称.在我的例子中它可能应该是这样的:
{
"category":
[
{
"id": 45,
"name": "Pasta",
"_order": 0,
"is_hidden": null,
"is_list": false
},
{
"id": 46,
"name": "Salads",
"_order": 1,
"is_hidden": null,
"is_list": false
},
{
"id": 47,
"name": "Dessert",
"_order": 2,
"is_hidden": null,
"is_list": false
}
]
}
Run Code Online (Sandbox Code Playgroud)
那么如何让它在我的适配器中看起来如此?好像我应该使用 DS.RESTSerializer,但我无法弄清楚我应该覆盖哪种方法......
我今天早些时候遇到了这个问题。解决这个问题的一个很好的干净方法是为您的 ApplicationSerializer 定义一个 normalizePayload 方法。它是为了被覆盖而设计的,因此您不会影响其他任何内容。
例如
App.ApplicationSerializer = DS.RESTSerializer.extend({
normalizePayload: function(type, payload) {
return { category: payload };
}
}
Run Code Online (Sandbox Code Playgroud)
如果您只想对处理的某些有效负载执行此操作,那么您只需在其中添加一个条件即可。
App.ApplicationSerializer = DS.RESTSerializer.extend({
normalizePayload: function(type, payload) {
if (type.toString() === 'App.Category') {
return { category: payload };
}
}
}
Run Code Online (Sandbox Code Playgroud)
有关 normalizePayload 方法的更多信息,请参阅http://emberjs.com/api/data/classes/DS.RESTSerializer.html#method_normalizePayload
| 归档时间: |
|
| 查看次数: |
6233 次 |
| 最近记录: |