javascript - Backbone - 将模型更改保存到本地对象

标签 javascript backbone.js architecture

我正在构建一个应用程序,它将加载 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/

相关文章:

javascript - 在服务器和客户端之间共享 JavaScript 模型代码,这种方法有效吗?

C# .net - 接口(interface)/实现方案中的 Dll 命名约定

javascript - CDN 回退问题

backbone.js - 使用主干复杂模型渲染带有下划线模板引擎的 html 表

jquery - Backbone.js View 中更灵活的 tagName

ruby-on-rails - 什么是 DCI,它如何适应 Rails?

c# - MVC 中的 View 是否应该了解模型数据?

javascript - ng-repeat 不显示任何内容

javascript - 如何用两个图像保存 Canvas

javascript - 获取 HTML 中的 javascript 变量