0
3つのカスケード・ドロップダウン・リストを作成しようとしています。最初はプロジェクトを制約し、2番目のプロジェクトには選択したプロジェクトのタスクが含まれ、最後の1つのサイトには選択したタスクが含まれます。バックボーン・リレーショナルでネストされた構造を作成する
私はバックボーン・リレーショナル・プラグインを使用したいが、適切な関係を作成するのは難しい。このプラグインで初めてのことです。
コードこれまで:
App.Models.ProjectItem = Backbone.RelationalModel.extend({
default: {
id: 0,
name: ''
},
relations: [{
type: Backbone.HasMany,
key: 'tasks',
relatedModel: App.Models.TaskItem,
//includeInJSON: Backbone.Model.prototype.idAttribute,
collectionType: App.Collections.TasksCollection,
reverseRelation: {
key: 'projectId',
//includeInJSON: Backbone.Model.prototype.idAttribute,
type: Backbone.HasOne
}
}]
});
App.Collections.ProjectsCollection = Backbone.Collection.extend({
model: App.Models.ProjectItem
});
App.Models.TaskItem = Backbone.RelationalModel.extend({
default: {
id: 0,
name: ''
},
relations: [{
type: Backbone.HasMany,
key: 'sites',
relatedModel: App.Models.SiteItem,
includeInJSON: Backbone.Model.prototype.idAttribute,
collectionType: App.Collections.SitesCollection,
reverseRelation: {
key: 'taskId',
//includeInJSON: Backbone.Model.prototype.idAttribute,
type: Backbone.HasOne
}
}]
});
App.Collections.TasksCollection = Backbone.Collection.extend({
model: App.Models.TaskItem
});
App.Models.SiteItem = Backbone.RelationalModel.extend({
default: {
id: 0,
name: ''
}
});
App.Collections.SitesCollection = Backbone.Collection.extend({
model: App.Models.SiteItem
});
単一プロジェクトの作成:
var item = new App.Models.ProjectItem({
id: 1,
name: 'project',
tasks: [
{
id: 1,
name: 'task',
sites: [
{
id: 1,
name: 'site'
}
]
}
]
})
JSONにシリアライズこのオブジェクトは、次のようになります。
"{"id":1,"name":"task","tasks":[1],"sites":[{"id":1,"name":"site"}],"projectId":null}"
私の質問:
1 )なぜサイトその配列はタスクにネストされていませんか?
2)サイトコレクションは、タスクと同じ方法でシリアル化されません。私もサイトモデルで関係を作成する必要がありますか?
3)なぜrootのためにprojectIdが返されるのですか?