我正在构建一个应用程序,它将加载 JSON 文件并使用它来填充所有模型。我必须保留更改列表,然后在单击“发布”按钮后将其发布回服务器。
我认为使用 Backbone.LocalStorage 和使用模型更改事件来跟踪哪些模型发生更改的组合听起来不错,但听取走这条路线或解决类似问题的人的意见会有所帮助!
这种方法有意义吗?还有更好的吗?
最佳答案
如果您试图跟踪各个更改而不仅仅是保存之前的最终状态,那么创建一个 Audit
模型或类似的模型可能是一个好主意。您可以按照您的建议 Hook change
事件。只要您愿意,可以使用 Backbone.sync
的标准版本(或一些批量修改)将这些 Audit
模型保存到服务器。该模型可能看起来像这样:
var Audit = Backbone.Model.extend({
defaults : {
auditableType: "", auditableId: null, auditedChanges : ""
},
paramRoot : "audit"
});
var Audits = Backbone.Collection.extend({
model : Audit
});
然后创建一个模型原型(prototype),所有审核的模型都可以从中扩展:
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
});
关于javascript - Backbone - 将模型更改保存到本地对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23481241/