我正在构建一个应用程序,它将加载一个JSON文件并使用它来填充所有模型。我必须保留一个更改列表,然后在单击“发布”按钮后将其发回服务器。
我认为结合使用Backbone.LocalStorage并使用模型更改事件来跟踪哪些模型的更改听起来是正确的,但它有助于听到那些沿着这条路走下去或者解决类似问题的人!
这种方法有意义吗?还有更好的吗?
答案 0 :(得分:2)
如果您在保存之前尝试跟踪个别更改而不仅仅是最终状态,那么创建Audit
模型或类似的模型可能是个好主意。您可以按照建议挂钩change
个事件。可以使用Audit
的标准版本(或某些批量修改)将这些Backbone.sync
模型保存到服务器。该模型可能如下所示:
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
});