Backbone.js 如果我的整个应用程序和数据都是本地的,如何使用Backbone.Model.save()?

Backbone.js 如果我的整个应用程序和数据都是本地的,如何使用Backbone.Model.save()?,backbone.js,Backbone.js,我正在制作一个完全本地的主干应用程序,不包括服务器端,我为这个应用程序提供一些初始的本地数据。数据实际上是收集数据,它是一个json文件,存储在名为data的文件夹中。因此,我为集合提供了一个url属性,即data/datalist.json,并使用this.Collection.fetch()获取初始数据。一切都很好 但我希望视图中发生的任何更新都将保存对该集合json数据文件中相应模型数据的更改。似乎this.model.save({name:newName})对我不起作用。每次我刷新整个页

我正在制作一个完全本地的主干应用程序,不包括服务器端,我为这个应用程序提供一些初始的本地数据。数据实际上是收集数据,它是一个json文件,存储在名为data的文件夹中。因此,我为集合提供了一个url属性,即
data/datalist.json
,并使用
this.Collection.fetch()
获取初始数据。一切都很好


但我希望视图中发生的任何更新都将保存对该集合json数据文件中相应模型数据的更改。似乎
this.model.save({name:newName})
对我不起作用。每次我刷新整个页面时,应用程序仍然会显示初始数据文件。那么,当视图中的项目被更新、删除或创建时,我应该如何更改数据文件呢?我需要在模型中设置url属性吗

Model.save调用Backbone.sync方法,默认情况下,该方法将CRUD函数映射到REST api。如果要使用REST以外的内容进行保存/更新/删除,则需要覆盖Backbone.sync

有一个本地存储插件覆盖Github上的同步,该插件由Backbonejs支持:


此插件应在应用程序运行时保存您的数据。如果您想将更改写入文件系统(不确定,我自己没有使用过),可能需要扩展它。希望这能让你开始。

本地存储和SSEStION存储的唯一缺点是旧的浏览器不支持它们,所以你可以考虑一些类似于Lawnchair()的东西,它为旧的技术提供了一些包装,为你提供了更广阔的功能浏览器基础。但eterps所说的仍然成立,您可能只需要创建一个新的Backbone.sync,它使用Lawnchair来代替。@johnmunch如果我使用chrome或firefox等现代浏览器,仅仅提到localStorage插件还不够吗?我必须创建一个新的主干。同步?@chaonexto或者绝对不。如果你参考了一个好的工具,比如“我什么时候可以使用…”(When-can-use…()),它说你打算支持的所有浏览器都有本地存储,那就使用它吧。即使不支持,如果大多数浏览器都支持它,请稍后回来,换成不同版本的同步,一旦你有了一个好的工作应用程序和想要使用它的人,再添加更多浏览器支持。@johnmunch抱歉,我有点困惑。所以说绝对不行,你的意思是说仅仅本地存储是绝对不够的,或者说如果我在现代浏览器中使用本地存储,就绝对不需要创建一个新的主干网。sync?@chaonextdo或我的道歉。我应该说得更清楚。我的评论是为了回答你的问题,“我必须创建一个新的主干.sync?”不。只需按照eterps所说的做,并使用本地存储插件。如果您决定localStorage不能覆盖您想要支持的所有浏览器,那么您只需要创建一个新的自定义浏览器。