我正在尝试使用backbone.js构建一个移动应用程序:
应用程序永远不会将数据更改提交到服务器,但只能使用本地存储。
我正在手动从服务器加载数据并填充集合,只有我无法将数据传输到本地存储才能正常工作。
我正在撞墙试图让它发挥作用。任何有关如何解决这个问题的想法都非常感谢。我见过的所有示例都提交到服务器或纯粹的本地存储。
答案 0 :(得分:5)
一些示例代码将非常有用。
我不确定你是如何在第一次运行时从服务器加载项目列表的,如果你已经让本地存储工作了,但是,这是我可能把它放在一起的方式。 / p>
如果您在应用程序运行期间永远不需要返回服务器刷新任何模型,那么执行此操作的非常简便的方法是从应用程序中嵌入的服务器中提供模型,并在创建时加载它们你的收藏:
foo = new MyCollection(myJSONthatContainsAllTheModels)
有关详情,请参阅Backbone文档中的Bootstrapping。
如果您需要在应用程序运行过程中定期从服务器刷新,那么..
使用backbone-localstorage为as,只需进行一次更改。这意味着它将覆盖同步方法和任何正常的“获取”,“保存”等功能将操纵本地存储。更改将是将原始Backbone.Sync复制到一个名为Backbone.ServerSync的新函数,然后将Backbone.Sync替换为LocalStorage版本。这样可以保留REST同步。
然后,我将使用Backbone.ServerSync函数扩展Backbone.Collection,该函数用于从服务器获取数据。
看起来像backbone-localstorage不会干扰集合的URL属性,所以你应该能够很容易地做到这一点。
这个新的集合函数,比如称为serverfetch,为了清晰起见,或多或少会成为fetch的克隆,但使用Backbone.ServerSync方法而不是Backbone.Sync。
从服务器获取响应并解析后,它将为每个应该为本地存储提交的模型调用add。