确保file.json与BackBone Collection同步



我是BackBone的新手,正在根据网上的模板构建我的应用程序。我开始从file.json加载我的数据,就像这样…

livestock.groups = Backbone.Collection.extend({
model: livestock.Activity,
url: "groups.json"
});

然后,我有几行代码将集合加载到HTML并设置按钮功能。然后在接近尾声时,我有一行更新了扩展集合,如下所示。。。

function addToList(activity) {
livestock.groups.add({id: 6, type: activity, comments: 'Wow...that was easy.'});
}

这对于集合的HTML版本来说很好,但我想在addToList函数中添加一行,以更新我的.json文件。如何做到这一点?

这实际上是不可能的。Backbone旨在与RESTful web服务进行交互。当你像你一样给它一个JSON文件的URL时,它会发送一个GET请求,这很好。它不知道是否调用了web服务。但是,当您想将更新发送到集合时,它会生成一个HTTPPOST请求。然而,将POST请求提交到静态文件并没有任何好处。Apache或您用来承载JSON文件的任何东西可能会忽略这一点,并再次为静态文件提供服务。

然而,真正的问题与Backbone本身无关。问题是您无法通过javascript在远程服务器上编辑文件。在使用PHP或Ruby之类的东西之间,您需要一些web服务,这些服务可以接受Backbone的请求并更新服务器硬盘上的文件。

如果你现在正在本地计算机上进行开发,那么这将不会起作用,原因不同。出于安全考虑,浏览器不允许javascript修改硬盘上的本地文件,即使它们与html和javascript位于同一文件夹中。

希望这能有所帮助。

编辑:根据评论,在此处添加指向Backbone到LocalStorage和IndexedDB:的几个示例适配器的链接

  • http://documentcloud.github.com/backbone/docs/backbone-localstorage.html
  • https://github.com/superfeedr/indexeddb-backbonejs-adapter

最新更新