2013-09-05 26 views
2

目前JSONStore API提供的文檔中說,一個load()方法:IBM工作燈 - JSONStore邏輯從服務器刷新數據並能夠脫機工作

這始終函數商店不管它回來來自適配器。如果 數據存在,則它將被複制到集合中「。這意味着如果您想通過在已填充的集合上調用load()來避免重複,則需要先清空或刪除集合 但是,如果您希望能夠保持你已經在 元素的情況下收集有沒有更多的連接和你 應用程序進入了離線模式,您還需要保持 跟蹤這些現有的元素。

由於該API不會提供一個「覆蓋」選項,以替代現有的元素,以防止對適配器的調用成功,我想知道什麼樣的logi爲了管理數據的脫機可用性和隨時刷新的能力,c應該到位?通過嵌套JS代碼來管理所有失敗案例並不那麼明顯,因爲承諾...

感謝您的建議!實現這一

回答

3

一種方法:

  • 使用enhance創建自己的負載方法(即loadAndOverwrite)。您應該可以訪問保存在JSONStore實例中的所有變量(集合名稱,適配器名稱,適配器加載過程名稱等) - 您可能會在下面的invokeProcedure步驟中使用這些變量。

  • 致電確保沒有本地更改。

  • 呼叫invokeProcedure獲取數據,所有你需要的應該加強的背景下提供的變量。

  • 找到,如果該文件已經存在,那麼它remove。使用{push: false},因此JSONStore不會跟蹤該更改。

  • 使用add添加新的/更新的文件。使用{push: false},因此JSONStore不會跟蹤該更改。

  • 或者,如果文件存在,您可以使用replace進行更新。

  • 或者,您可以使用removeCollection並再次撥打load來刷新數據。

有一個示例顯示如何使用所有這些API調用here

關於承諾,請從InfoCenter中閱讀this,從HTML5Rocks中閱讀this。 Google可以提供更多信息。

+0

我有一種感覺,我想要做的是一個相當普遍的模式,我看到,它需要大量的邏輯來管理它。我希望將來API將會發展到非常簡單的管理。 –

+0

未來的JSONStore工作在很大程度上取決於客戶的需求,這是一個很好的溝通方式,就是做一個[功能請求](https://www.ibm.com/developerworks/community/forums/html/topic?id=77777777-0000- 0000-0000-000014907906&PS = 25)。 – cnandreu