これをやろうとしている時間と時間がありましたら、私はあなたの助けが必要です。Sencha 2:LocalStorageのhasMany関連のモデルを同期する
私はモデルにする必要があります:プロジェクトとタスク。プロジェクトhasManyタスクとタスクはプロジェクトに属します。これらのモデルを保存するために店舗を使用しない場合、すべての機能がうまく機能します。
タスクとプロジェクトの両方を2つのストア(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);
プロジェクトがストアに追加されますが、タスクはありません。なぜ ?!それは、この記事の執筆時点の時には動作しません:
すでに両方のストアが変化に同期するように設定されている場合でも、試してみました。 – Alytrem
これは覚えておくのは良いことですが、それは問題の修正ではありません。問題はST2の限界です。 –