Ember.js Ember extractArray有效负载在应用程序中不可用
我正在尝试在REST序列化程序中修改JSON负载,以便在我的Ember应用程序中使用它 这就是来自服务器的真正JSON的样子:Ember.js Ember extractArray有效负载在应用程序中不可用,ember.js,ember-data,ember-cli,serialization,Ember.js,Ember Data,Ember Cli,Serialization,我正在尝试在REST序列化程序中修改JSON负载,以便在我的Ember应用程序中使用它 这就是来自服务器的真正JSON的样子: { "folders": [ { "file_ids": [ 2001, 2002, 2003 ], "child_folder_ids": [ 2 ], "id": 1, "name": "Root folder
{
"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
]
}
]
}
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);
}
});
以下是余烬文件夹模型的外观:
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中的相关_文件夹中。基本上这也是文件夹,所以我想使用文件夹模型。我已尝试修改REST序列化程序中的负载,以便相关文件夹将成为文件夹数组的一部分
以下是我的序列化程序的外观:
{
"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
]
}
]
}
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);
}
});
此时,我的文件夹和相关文件夹都作为文件夹存在存储中,但不知何故,我无法使用控制器或组件中的文件夹属性在计算属性中使用它们。我想确定哪些文件夹是根文件夹,哪些是子文件夹,然后使用模板中的每个帮助器的把手来显示正确的文件夹。有没有人知道我做错了什么,或者有没有更好的方法来解决这个问题 主要问题是我没有在folderSerializer中扩展我的applicationSerializer。现在它开始工作了