2012-03-19 51 views
1

經過數小時的努力,我需要您的幫助。Sencha 2:在LocalStorage中與hasMany關聯同步模型

我必須模型:項目和任務。一個項目有許多任務和一個任務屬於一個項目。如果您不使用商店來保存這些模型,那麼Everywhere運作良好。

我想將任務和項目保存在兩個存儲(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 2012-04-23 12:49:01

+0

這是一個很好記住的問題,但這不是解決問題的方法,我認爲問題是ST2的一個限制。 – 2012-11-26 05:03:08

1

簡短的回答後保存或同步店:它不會在寫這篇文章的時間準時上班。我認爲應該,但事實並非如此。我最終創建了相當複雜的解決方法。我可以說剛剛完成一個相當複雜的Sencha Touch 2項目,它仍然值得使用hasMany關聯,因爲在會話過程中它提供了一些顯着的好處。但是,在存儲狀態時,我認爲您必須自己推出並手動重新構建。看到這個帖子:

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

+0

從2.3.0(2013年8月)開始,這仍然是Sencha Touch的狀態:不支持存儲關聯。 – sherb 2013-11-07 18:52:47

相關問題