2

目前 JSONStore API 提供了一个 load() 方法,在文档中说:

此函数始终存储从适配器返回的任何内容。如果数据存在,则在集合中重复”。这意味着如果您想通过调用 load() 对已填充的集合来避免重复,则需要先清空或删除集合。但是如果您希望能够为了在没有更多连接并且您的应用程序进入离线模式的情况下保留集合中已有的元素,您还需要跟踪这些现有元素。

由于 API 没有提供“覆盖”选项来替换现有元素,以防对适配器的调用成功,我想知道应该放置什么样的逻辑来管理数据的离线可用性和随时刷新的能力?由于承诺,通过嵌套 JS 代码来管理所有失败案例并不是那么明显......

感谢您的建议!

4

1 回答 1

3

实现这一目标的一种方法:

  • 使用增强创建您自己的加载方法(即loadAndOverwrite)。您应该可以访问保存在 JSONStore 实例中的所有变量(集合名称、适配器名称、适配器加载过程名称等——您可能会在下面的 invokeProcedure 步骤中使用这些变量)。

  • 调用push以确保没有本地更改。

  • 调用invokeProcedure获取数据,你需要的所有变量都应该在enhanced的上下文中提供。

  • 查找文档是否已存在,然后将其删除。使用{push: false}JSONStore 将不会跟踪该更改。

  • 使用add添加新的/更新的文档。使用{push: false}JSONStore 将不会跟踪该更改。

  • 或者,如果文档存在,您可以使用replace来更新它。

  • 或者,您可以使用removeCollection并再次调用load来刷新数据。

这里有一个示例展示了如何使用所有这些 API 调用。

关于 Promise,请InfoCenter 和HTML5Rocks阅读此内容。谷歌可以提供更多信息。

于 2013-09-05T15:41:39.400 回答