Javascript 主干-将模型更改保存到本地对象
我正在构建一个应用程序,它将加载一个JSON文件,并使用该文件填充所有模型。我必须保留更改列表,然后在单击“发布”按钮后将其发回服务器 我认为结合使用Backbone.LocalStorage和使用模型更改事件来跟踪哪些模型发生了更改听起来是正确的,但如果听到有人这样做或解决了类似问题,这会有所帮助Javascript 主干-将模型更改保存到本地对象,javascript,backbone.js,architecture,Javascript,Backbone.js,Architecture,我正在构建一个应用程序,它将加载一个JSON文件,并使用该文件填充所有模型。我必须保留更改列表,然后在单击“发布”按钮后将其发回服务器 我认为结合使用Backbone.LocalStorage和使用模型更改事件来跟踪哪些模型发生了更改听起来是正确的,但如果听到有人这样做或解决了类似问题,这会有所帮助 这种方法有意义吗?有更好的方法吗?如果您试图跟踪单个更改,而不仅仅是保存前的最终状态,那么创建审核模型或类似的方法可能是一个好主意。您可以按照建议挂接到更改事件。可以随时使用标准版本的Backbon
这种方法有意义吗?有更好的方法吗?如果您试图跟踪单个更改,而不仅仅是保存前的最终状态,那么创建
审核
模型或类似的方法可能是一个好主意。您可以按照建议挂接到更改事件。可以随时使用标准版本的Backbone.sync
将这些Audit
模型保存到服务器。该模型可能看起来像这样:
var Audit = Backbone.Model.extend({
defaults : {
auditableType: "", auditableId: null, auditedChanges : ""
},
paramRoot : "audit"
});
var Audits = Backbone.Collection.extend({
model : Audit
});
然后创建一个模型原型,所有经审核的模型都可以从中扩展:
var audits = new Audits();
var AuditedModel = Backbone.Model.extend({
initialize : function (options) {
this.listenTo(this, "change", function (model, options) {
audits.add({
auditableType : this.paramRoot,
auditableId : this.id,
auditedChanges : this.changed
});
});
}
});
现在,只需将您的AuditedModel
扩展到任何要跟踪更改的模型
var User = AuditedModel.extend({
paramRoot : "user",
// Do whatever
});
谢谢安德鲁。这很有道理。我与我的团队的另一部分交谈,他们让我知道我可以发回我将用于创建模型的全部更新json。我使用的是localstorage,所以我可能会序列化这些模型以发回。我还需要跟踪更改,以便在发布前在应用程序中显示列表,这样您的解决方案听起来很棒。谢谢