2012-03-19 10 views
1

これをやろうとしている時間と時間がありましたら、私はあなたの助けが必要です。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); 

プロジェクトがストアに追加されますが、タスクはありません。なぜ ?!それは、この記事の執筆時点の時には動作しません:

答えて

0

は、タスク

Ext.getStore("ProjectStore").sync(); 
+0

すでに両方のストアが変化に同期するように設定されている場合でも、試してみました。 – Alytrem

+0

これは覚えておくのは良いことですが、それは問題の修正ではありません。問題はST2の限界です。 –

1

短い答えを追加した後に店を保存したり、同期することを忘れないでください。私はそれがすべきだと思うが、それはしない。私は非常に精巧な回避策の作成を終了しました。私はかなり複雑なSencha Touch 2プロジェクトを終えたばかりであると言えます。セッションの途中でいくつかの重要な利点があるため、多くの団体を使用して価値があります。しかし、状態を保存するときは、手動でロールバックして再構成する必要があると思います。この記事を参照してください。

http://www.sencha.com/forum/showthread.php?240144-Type-of-hasmany-associations-localstorage-store-can-not-be-retrieved-out

+0

これはまだSencha Touchの状態で、2.3.0(2013年8月)です。関連付けの保存はサポートされていません。 – sherb

関連する問題