经过几个小时的努力,我需要你的帮助。
我必须建模:项目和任务。一个项目有许多任务,一个任务属于一个项目。如果您不使用商店来保存这些模型,那么一切都很顺利。
我想在两个商店(TaskStore和ProjectStore)中保存任务和项目。这些商店使用LocalStorage代理。
我尝试过很多东西,最合乎逻辑的是:
Ext.define('MyApp.model.Task', {
extend: 'Ext.data.Model',
config: {
fields: [
{
name: 'name',
type: 'string'
},
{
dateFormat: 'd/m/Y g:i',
name: 'start',
type: 'date'
},
{
dateFormat: 'd/m/Y g:i',
name: 'end',
type: 'date'
},
{
name: 'status',
type: 'string'
}
],
belongsTo: {
model: 'MyApp.model.Project'
}
}
});
Ext.define('MyApp.model.Project', {
extend: 'Ext.data.Model',
alias: 'model.Project',
config: {
hasMany: {
associationKey: 'tasks',
model: 'MyApp.model.Task',
autoLoad: true,
foreignKey: 'project_id',
name: 'tasks',
store: {storeId: "TaskStore"}
},
fields: [
{
name: 'name',
type: 'string'
},
{
dateFormat: 'd/m/Y',
name: 'start',
type: 'date'
},
{
dateFormat: 'd/m/Y',
name: 'end',
type: 'date'
}
]
}
});
这是我的“主要”:
var project = Ext.create("MyApp.model.Project", {name: "mojo", start: "17/03/2011", end: "17/03/2012", status: "termine"});
var task = Ext.create("MyApp.model.Task", {name: "todo", start: "17/03/2011 10:00", end: "17/03/2012 19:00", status: "termine"});
project.tasks().add(task);
Ext.getStore("ProjectStore").add(project);
项目已添加到商店,但任务不是。为什么?!
答案 0 :(得分:1)
简短回答:在撰写本文时,它不起作用。我认为应该,但事实并非如此。我最终创建了相当精细的解决方法。我可以说刚刚完成了一个相当复杂的Sencha Touch 2项目,它仍然值得使用hasMany协会,因为在会话过程中它提供了一些重要的好处。但是,在存储状态时,我认为您必须自己动手并重新构建。看这篇文章:
答案 1 :(得分:0)
添加任务
后,不要忘记保存或同步商店Ext.getStore("ProjectStore").sync();