我正在尝试修改REST序列化程序中的JSON有效负载,以便可以在Ember应用程序中随心所欲地使用它。
这是来自服务器的真实JSON的样子:
{
"folders": [
{
"file_ids": [
2001,
2002,
2003
],
"child_folder_ids": [
2
],
"id": 1,
"name": "Root folder",
"parent_folder_id": null,
"parent_folder_ids": []
}
],
"related_folders": [
{
"file_ids": [],
"child_folder_ids": [
3
],
"id": 2,
"name": "Child folder",
"parent_folder_id": 1,
"parent_folder_ids": [
1
]
}
]
}下面是Ember文件夹模型的外观:
export default DS.Model.extend({
name: DS.attr('string'),
files: DS.hasMany('file'),
childFolders: DS.hasMany('folder', {inverse: 'parentFolder'}),
parentFolders: DS.hasMany('folder'),
parentFolder: DS.belongsTo('folder', {inverse: 'childFolders'}),
});childFolders和parentFolders在我从服务器得到的JSON中的related_folders中。基本上这也是文件夹,所以我想使用文件夹模型。我已经尝试修改REST序列化程序中的有效负载,以便相关的文件夹将成为文件夹数组的一部分。
这是我的序列化程序的样子:
export default DS.RESTSerializer.extend({
extractArray: function(store, type, payload) {
var rootFolders = payload.folders;
var childFolders = payload.related_folders;
var folders = [];
rootFolders.forEach(function(rootFolder) {
folders.push(rootFolder);
});
childFolders.forEach(function(childFolder) {
folders.push(childFolder);
});
payload = { folders: folders };
return this._super(store, type, payload);
}
});目前,我的文件夹和相关文件夹都作为文件夹存储在存储中,但不知何故,我不能使用控制器或组件中的文件夹属性来在计算属性中使用它们。我想确定哪些文件夹是根文件夹,哪些是子文件夹,然后使用模板中的每个帮助器的把手来显示正确的文件夹。有没有人知道我做错了什么,或者有没有更好的方法来解决这个问题?
发布于 2015-04-13 23:08:26
嗯,主要的问题是我没有在folderSerializer中扩展我的applicationSerializer。现在它起作用了。
https://stackoverflow.com/questions/29605617
复制相似问题